5D艺术网首页
商城
|
资讯
|
作品
|
博客
|
教程
|
论坛
登录
注册
加为好友
发短消息
来自:山东
性别:先生
最后登录:2011-01-05
http://xbzg.5d.cn/
专注于Flash+FMS开发...通过Google搜索西部之光Software
首页
|
新闻
|
话题
|
博客
|
相册
|
艺术作品
|
社交关系
|
留言板
|
社交圈
2006/02/22 | 体验AS3.0(十三)
类别(Flash)
|
评论
(0)
|
阅读(232)
|
发表于 07:01
我们已经知道如何设置帧速和场景的大小,我们想在场景中让某些东东动起来。以前,我们可以使用onEnterFrame作用在MovieClip上来达到目的,在AS3.0中,情况发生了变化。就跟我们以前提到的如何用addEventListener激活鼠标事件一样,我们现在只需知道事件的具体名称就可以了。EventType有一个静态成员ENTER_FRAME,这就是我们所需要的。
下面这个例子将创建十个圆并让它们在场景中运动起来。
package {
// use
// -default-size 800 800 -default-frame-rate 31
// as the additional compiler arguments
import flash.events.Event;
import flash.events.EventType;
import flash.display.Sprite;
public class Test extends Sprite {
public function Test() {
var minSize:Number = 10;
var maxSize:Number = 50;
var minSpeed:Number = 20;
var maxSpeed:Number = 50;
for( var i:int=0; i<10; i++){
var mc:MovingCircle = new MovingCircle(
getRandom( minSize, maxSize),
getRandom( minSpeed, maxSpeed),
getRandom( minSpeed, maxSpeed));
addChild( mc);
}
}
private function getRandom( minVal:Number, maxVal:Number):Number{
return minVal + Math.random() * (maxVal - minVal);
}
}
private class MovingCircle extends Sprite
{
private var xSpeed:Number;
private var ySpeed:Number;
public function MovingCircle( size:Number, xSpeed:Number, ySpeed:Number){
this.xSpeed = xSpeed;
this.ySpeed = ySpeed;
createUI( size);
addEventListener(EventType.ENTER_FRAME, onEnterFrame);
}
private function createUI( size:Number){
graphics.beginFill(Math.floor(Math.random() * 0xffffff));
graphics.drawCircle(-size/2, -size/2, size);
graphics.endFill();
}
private function onEnterFrame( evt:Event):Void{
x += xSpeed;
y += ySpeed;
if( x < 0){
x = Math.abs(x);
xSpeed *= -1;
} else if( x > stage.stageWidth){
x = stage.stageWidth - (x - stage.stageWidth);
xSpeed *= -1;
}
if( y < 0){
y = Math.abs(y);
ySpeed *= -1;
} else if( y > stage.stageHeight){
y = stage.stageHeight - (y - stage.stageHeight);
ySpeed *= -1;
}
}
}
}
既然我们不想让这些圆运动到场景以外,我们只要用场景的尺寸加以限制就可以了。从stage的属性中我们可以获取它的大小,并不需要另外建立一个常量。
0
评论
Comments
日志分类
首页
[186]
Flash
[84]
FMS
[41]
AIR
[2]
ASP
[11]
作品区
[12]
其他
[36]