动作脚本3按x,y移动对象

时间:2011-11-27 20:46:18

标签: actionscript-3

我为编程课程做了功课。我的任务是制作气球射击游戏。我按照自己的方式做了一切,气球正在产卵,反击工作。但是我不能让它们向上移动,我知道如何移动= y ++。这是我的问题,我无法弄清楚在哪里以及如何。代码如下:

import flash.events.MouseEvent;
import flash.events.Event;
var c = 0;
circle.addEventListener(MouseEvent.MOUSE_DOWN, handlerMouseDown);
circle.addEventListener(MouseEvent.MOUSE_UP, handlerMouseUp);
function handlerMouseDown(event:MouseEvent):void{
    circle.startDrag();
}

function handlerMouseUp(event:MouseEvent):void{
    circle.stopDrag();
    var i:int;
    for (i=numChildren-1;i>=0;i--)
        if (getChildAt(i) is MyRectangle){
            if (circle.hitTestObject(getChildAt(i))){
                removeChildAt(i);
                c++;
                score.text =c;
            }
        }
}

var moveUp:Boolean = true;
var b:Boolean = false;
var t1 = 1000;
var t2 = 1002;
var myTimer:Timer = new Timer(t1); 
myTimer.addEventListener(TimerEvent.TIMER, runMany);
myTimer.start();

function runMany(event:TimerEvent):void {
    b = true;
    t1+=50;
}

var myTimer2:Timer = new Timer(t2); 
myTimer2.addEventListener(TimerEvent.TIMER, runMany2);
myTimer2.start();

function runMany2(event:TimerEvent):void {
    b = false;
    t2 -=50;
}

addEventListener(Event.ENTER_FRAME, handlerEnterFrame);
function handlerEnterFrame(event:Event):void{
var rect:MyRectangle = new MyRectangle();

addChildAt(rect,0);
if(b){
    rect.x = int(Math.random()*width);
    rect.y = int(Math.random()*height)
    }
}

circle.addEventListener(Event.ENTER_FRAME, handlerEnterFrame2);
function handlerEnterFrame2(event:Event):void{
    Mouse.hide();
    circle.startDrag(true);
}

1 个答案:

答案 0 :(得分:0)

我从您的描述中看到的一个问题是您的坐标有些错误。屏幕的左上角是(0,0),如果使用y++,对象将向下移动,而不是向上移动。 y--会提升它......虽然很慢。

第二件事是,你需要进行某种更新周期。您的Balloon课程应该有update()个功能,每个气球都会调用该功能。在气球的更新功能中,您可以放置​​y--(或其他东西来改变其位置)。一旦你达到目的,你也可能想要在那里进行碰撞检测。您需要将所有气球(以及随时间变化的所有其他气球)放入一个数组中,并且每个帧在数组中的每个项目上调用update()并使用for循环。每当你向舞台添加一些内容时,它也应该被添加到每帧更新的对象数组中。