第2节 元件和游戏轮询的使用——Flash ActionScript3游戏开发入门教程

现在我来介绍一种Flash特有的类——元件。

元件的概念有些类似于GUI编程的控件,但是Flash的元件种类更少(只有三种:图形、按钮、影片剪辑),而且更容易自定义画面。

点击“插入”菜单->“新建元件”,弹出一个对话框:


注意红框部分要和图片保持完全一致,除了元件名称和类名,这两个只要保持一致,并且用类名的大写首字母命名风格就可以。然后在弹出的对话框中点“确定”,对话框下边有个复选框,勾上之后可以一劳永逸,我就是因为之前给勾了,所以现在截不了图。

至于为什么要选中“为ActionScript导出”,这是为了方便给元件一个绑定的类,以便于面向对象程序设计的进行,具体操作下一节再说。


我随便画了一个矩形,但注意如果没有特殊需要,尽量把绘图区域中间的十字保持在矩形的中心,或者是左上角,这样以后添加元件的时候会比较方便。十字表示了元件的x、y位置坐标取值点。

然后我们来说说游戏轮询。

Flash中的游戏轮询和微软的XNA可不一样,XNA的游戏轮询是保罗了整个XNA项目的,所有的操作都在其中进行,而Flash的游戏轮询所能覆盖的范围就小一些了。XNA的输入判断要在游戏轮询里进行,而Flash的输入判断则是采用了Java Swing类似的事件侦听器的方式,这样事件处理函数就和游戏轮询分离了。

如下代码增加一个游戏轮询:

 

public function Main() {
// constructor code
addEventListener(Event.ENTER_FRAME, gameLoop);
}
function gameLoop(event:Event):void
{

}

addEventListener就是添加事件侦听器的方法,后边的两个参数一个是事件类型,一个是事件处理方法,下边的gameLoop是我们自定义的方法,里边可以写一些内容。

如下代码我增加了一些内容:

package {

import flash.display.MovieClip;
import flash.events.Event;

public class Main extends MovieClip {

var player:Player=null;
public function Main() {
// constructor code
addEventListener(Event.ENTER_FRAME, gameLoop);
}
function gameLoop(event:Event):void
{
if(player==null)
{
player=new Player();
player.x=stage.stageWidth/2;
player.y=stage.stageHeight/2;
addChild(player);
}
player.x--;
}
}

}

创建一个Player类型的对象player,把它的坐标设计在舞台的中心(宽度和高度都除以2),然后用addChild()显示在舞台上,并且让他每帧x坐标自减。

Event.ENTER_FRAME是Flash的一个事件,意思是每次进入帧就执行,这样就实现了游戏轮询。

现在按Ctrl-Shift-Enter调试,如图所示:


一个蓝色矩形被放置在了舞台的中央,并且缓慢向左移动。

给元件实例命名除了在代码里用var定义变量之外,还可以直接在舞台上,把元件拖入舞台,在属性里的“实例名称”处修改,方法也很简单,这个不细说了,留给读者自己搜索~~

还有一个问题,这个Event.ENTER_FRAME在元件上也可以用——我说的是每个元件,这时候每个Event.ENTER_FRAME的先后顺序是不同步的,有可能导致一些错误,这个问题我们下节就会讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jether

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值