网站首页 美食营养 游戏数码 手工爱好 生活家居 健康养生 运动户外 职场理财 情感交际 母婴教育 生活知识 知识问答

Flash as3.0制作简单轮盘游戏

时间:2024-11-02 00:05:08

首先看基本效果图【因为是做的一个练习,所以美工上没有给太多时间】

Flash as3.0制作简单轮盘游戏

这个动画是在百度知道里回答知道网友问题时临时制作的一个轮盘游戏,即将360度分为42等分,然后点击中间黄色按钮,指针开始旋转,并随机停在某一个数字上。下面是制作步骤。

制作红色背景元件,这里只制作一个,然后靠代码复制42个均匀排列。因为要分成42分,所以每分大约在8.5度的左右,所以为确保准确,首选用直线工具画一条直线,如图:Flash as3.0制作简单轮盘游戏

复制上面那条直线,新建一层,然后按ctrl+shift+v粘贴,按q显示调整框,将中心移动到直线最下端,之后打开变形工具面板,将其旋转8度,然后在上面画一条横线将其封闭。如图:

Flash as3.0制作简单轮盘游戏

选择线2和线3,按ctrl+x剪切然后选择图层1,按ctrl+shift+v粘贴,这样就构成了封闭图形,然后给其填充红色,删除线条,并在图层2上创建一个动态文本框取名txt,用来显示1-42的数字,然后选择图层1和图层2,按下f8键,将其转为一个影片剪辑,最后效果如图:Flash as3.0制作简单轮盘游戏

这样这个背景元件元素就做好了,下一步就是ctrl+L打开库并选择这个元件,然后点右键--属性--勾选“为actionsript导出”--起类名为mymc为下一步代码调用做准备,然后删除场景中的元件。这里还要注意的是要把注册点定位到角的定点,如上图,中的角定位,在元件中定位在下面的小加号上。因为后面我们要以这个定为中心旋转生成42个。

制作圆形遮罩:在场景中画一个圆,将其转为影片剪辑,然后用对齐工具将其置于中心位置。并起实例名为maskmc如图:

Flash as3.0制作简单轮盘游戏

制作指针:新建一个影片剪辑,用矩形工具画一个矩形,然后调整为三角形,把注册点调整到下边中间位置,然后在库里为其加类外为zz如图:

Flash as3.0制作简单轮盘游戏

制作橙色中心按钮:新建一个影片剪辑,画一个圆形,调整好大小,然后移动图形,使注册点居中,然后在库里为其加类名为hs方法同上。

Flash as3.0制作简单轮盘游戏

至此元件完成,下面开始代码部分,在场景中新建一层,做为as层,按f9打开代码编辑器,然后输入以下代码:

import flash.display.Sprite;

import flash.events.MouseEvent;

import flash.events.Event;

var va:Number;//角旋转的加速度;

var speed:Number;//角旋转的速度;

var amc:Sprite=new Sprite();

addChild(amc);//一个空的容器,用来存放下面的循环制作的42个元件。

var angle:Number = 360 / 42;//42个元件每个大约要转的角度。

for (var i:int=0; i<42; i++)//复制42个元件

{

var mc:mymc=new mymc();

mc.txt.text = (i + 1).toString();//设定每个角上的数字。

mc.x = stage.stageWidth / 2;

mc.y = stage.stageHeight / 2;

mc.rotation = i * angle;//每隔一定的角度(angle)复制一个角。

amc.addChild(mc);//把复制的元件加入前面建立的容器。

}

amc.mask = maskmc;//给容器加圆形遮罩。maskmc是我们前面建立的圆形影片剪辑。

var zzmc:zz=new zz();//新建指针实例并确定起位置。

addChild(zzmc);

zzmc.x = stage.stageWidth / 2;

zzmc.y = stage.stageHeight / 2;

var hc:hs=new hs();//新建黄色按钮实例。

addChild(hc);

hc.x = stage.stageWidth / 2;

hc.y = stage.stageHeight / 2;

hc.addEventListener(MouseEvent.MOUSE_DOWN,ondown);//给按钮加鼠标按下侦听事件

function ondown(e:MouseEvent):void

{

speed=20;//设定初始转速

va=-Math.random()*.5;//设定随机初始加速度,因为是减速运动,所以为负。

addEventListener(Event.ENTER_FRAME,onenter);//加入进入帧侦听。

}

function onenter(e:Event):void//进入帧侦听函数

{

speed+=va;//匀减速运动的速度。

zzmc.rotation += speed;//把速度赋给指针

if (speed<0){//停止条件,当速度为负时,停止转动,移除侦听。

removeEventListener(Event.ENTER_FRAME,onenter);

}

}

至此全部完成,按ctrl+enter进行测试。

© 2026 小知经验
信息来自网络 所有数据仅供参考
有疑问请联系站长 site.kefu@gmail.com