+ -
当前位置:首页 → 问答吧 → AS 3.0多个按钮同一功能如何实现?谢谢!

AS 3.0多个按钮同一功能如何实现?谢谢!

时间:2010-12-10

来源:互联网

如题,我设计了一个以环保为主题的逃出房间小游戏,18个小时之后要交作业,场景基本上是完成了,但是代码还是有几个问题……请高手帮忙解决,不胜感激!

问题一:最大的问题,我的Frame 2 (第二帧) 是主场景,分别有三个箭头指向 Frame 3,4,5; Frame 3,4,5 也分别有一个箭头指向 Frame 2, 还有,标题画面的 “play” 按钮 也是指向Frame 2 的。相当于总共四个按钮,全部要执行相同的功能: goandstop (2) 但事实是只有play 按钮的命令有用,其他的都没有,说找不到对象。 在网上中英文都搜了,说是要写什么 if 指令,还有 parent 和 children 的。我刚学as 3.0 不是很久,还不太懂这么复杂的东西,麻烦哪位高手指点一下……
下面是我目前的代码,我只贴了相关的部分,请告诉我我该加点什么:
play_btn.addEventListener(MouseEvent.MOUSE_DOWN, buttonclicked);
function buttonclicked(event:MouseEvent):void {
gotoAndStop(2);
}
arrow1_btn.addEventListener(MouseEvent.MOUSE_DOWN,btnfun3);
function btnfun3 (e:MouseEvent)
{
gotoAndStop(3);
}
arrow2_btn.addEventListener(MouseEvent.MOUSE_DOWN,btnfun4);
function btnfun4 (e:MouseEvent)
{
gotoAndStop(4);
}
arrow3_btn.addEventListener(MouseEvent.MOUSE_DOWN,btnfun5);
function btnfun5 (e:MouseEvent)
{
gotoAndStop(5);
}
arrow4_btn.addEventListener(MouseEvent.MOUSE_DOWN,buttonclicked);
arrow5_btn.addEventListener(MouseEvent.MOUSE_DOWN,buttonclicked);
arrow6_btn.addEventListener(MouseEvent.MOUSE_DOWN,buttonclicked);

以上的按钮中, arrow4,5,6都不管用。我改过和前面一样的格式,换过不同的functions name, 都没用,所以我知道肯定是缺少代码,麻烦把代码贴给我……

问题二:我的逃离房间小游戏,需要把四个房间里的8样电器电源关掉,地上的垃圾捡干净,分别回收到三个垃圾桶里,然后就能逃离房间了。捡垃圾的代码我已经编好了,但是不知道回收到三个桶里的代码如何编,(垃圾扔进桶里消失)麻烦大家帮帮忙!捡垃圾出门的代码如下,为了测效果先设定为三个垃圾,但可能会被我加到10个。对了,桶的代码分别是 bin1_mc; bin2_mc; bin3_mc. 告诉我怎么加进去好么?
inventorywaste1_mc.alpha = 0;
inventorywaste2_mc.alpha = 0;
inventorywaste3_mc.alpha = 0;

function pickupObject(event:MouseEvent):void {
event.target.startDrag(true);
}
function dropObject(event:MouseEvent):void {
event.target.stopDrag();
}
inventorywaste1_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
inventorywaste1_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);
inventorywaste1_mc.buttonMode = true;

inventorywaste2_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
inventorywaste2_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);
inventorywaste2_mc.buttonMode = true;

inventorywaste3_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
inventorywaste3_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);
inventorywaste3_mc.buttonMode = true;

waste1_mc.addEventListener(MouseEvent.MOUSE_DOWN, objectFound);
waste2_mc.addEventListener(MouseEvent.MOUSE_DOWN, objectFound);
waste3_mc.addEventListener(MouseEvent.MOUSE_DOWN, objectFound);

var founditems:Number = 0;
function objectFound(event:MouseEvent):void {
       var inventoryName:String = "inventory" + event.target.name;
       var inventoryItemisplayObject = getChildByName(inventoryName);
       event.target.alpha = inventoryItem.alpha = 100;
       founditems ++;
       event.target.alpha = 0;
       if(founditems == 3){
           door_btn.addEventListener(MouseEvent.MOUSE_DOWN, escapeRoom);
}
}
function escapeRoom(event:MouseEvent):void {
gotoAndStop(6);
}

最后一个小问题,就是,如何把一个button和一个movie clip 联系起来,点了按钮,movieclip变色,或者是alpha变成0?举个例子给我就好,谢谢!

记住是AS3.0 噢,我们是不允许用2.0 的……小女子先谢大家了!如果字数限制,可以发邮件到我邮箱[email protected],不胜感激!

作者: tinykitten   发布时间: 2010-12-10

1 根据event.target  获得当前点击的对象
2 给MovieClip添加一个动态属性,记录各自要对应的按钮或者MC.

作者: flash023   发布时间: 2010-12-10