首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带AS3的滚珠跟踪鼠标

带AS3的滚珠跟踪鼠标
EN

Stack Overflow用户
提问于 2014-04-02 20:32:19
回答 2查看 60关注 0票数 0

我正在尝试用AS3做一个简单的游戏,类似于Tilt to Live。我试着让一个球跟随我的鼠标(另一个球),这样当球接触到鼠标球时,你就会输。它一直给出错误,我真的不知道如何解决它。

到目前为止,这是我的游戏:

公共类Main扩展了Sprite {

代码语言:javascript
复制
    public function Main():void 
    {
    var vijand:Sprite = new Sprite ();
    vijand.graphics.beginFill(0xFFFF66) ; 
    vijand.graphics.drawCircle(30,30 ,30 );
    addChild(vijand);

    var vijand1:Sprite = new Sprite ();
    vijand1.graphics.beginFill(0xFFFF66) ; 
    vijand1.graphics.drawCircle(50,50 ,50 );
    addChild(vijand1);
    }

    public function beweeg(e:Event.):void
    {
    vijand.x = mouseX;
    vijand.y = mouseY;

    if (vijand.x > vijand1.x)
    {
        vijand1.x += 2;
    }


    if (vijand.y > vijand1.y)
    {
        vijand1.y += 2; 
    }



    if (vijand.x < vijand1.x)
    {
        vijand1.x -= 2; 
    }



    if (vijand.y < vijand1.y)
    {
            vijand1.y -= 2;
    }   

    }


    }

    }
EN

回答 2

Stack Overflow用户

发布于 2014-04-02 21:29:51

我能看到的一个问题是你的'vijand‘和'vijand1’变量对于你的主构造函数是局部的。如果你想在主构造函数之外访问它们,你必须在构造函数之外声明它们,例如:

代码语言:javascript
复制
private var vijand:Sprite = new Sprite();
private var vijand1:Sprite = new Sprite();

public function Main():void 
    {
    ....

此外,'beweeg‘函数中也有一个拼写错误。删除“.”在‘Event’之后:

代码语言:javascript
复制
public function beweeg(e:Event):void
{
....

最后,您还需要一个事件侦听器来触发beweeg函数。可能是主构造函数中的ENTER_FRAME侦听器:

代码语言:javascript
复制
addEventListener(Event.ENTER_FRAME, beweeg);
票数 0
EN

Stack Overflow用户

发布于 2014-04-02 21:40:16

代码语言:javascript
复制
var myBall:Shape = new Shape();
var enemyBall:Shape = new Shape();
var ballRadius:int = 8;
var dx:Number, dy:Number, radian:Number, speed:Number = 10;

myBall.graphics.beginFill(0x009900);
myBall.graphics.drawCircle(0, 0, ballRadius);

enemyBall.graphics.beginFill(0x990000);
enemyBall.graphics.drawCircle(0, 0, ballRadius);

addChild(myBall);
addChild(enemyBall);

//Place enemy at center
enemyBall.x = stage.stageWidth * 0.5;
enemyBall.y = stage.stageHeight * 0.5;

addEventListener(Event.ENTER_FRAME, onEnterFrame);

function onEnterFrame(e:Event):void {
    myBall.x = stage.mouseX;
    myBall.y = stage.mouseY;

    dx = myBall.x - enemyBall.x;
    dy = myBall.y - enemyBall.y;

    if (Math.sqrt(dx * dx + dy * dy) <= ballRadius * 2) {
        //NOOOOOoooooo
        //Game over
        removeEventListener(Event.ENTER_FRAME, onEnterFrame);
    } else {
        //Update enemy position
        //Every N ticks, increase speed, because it will be very easy game ;)
        radian = Math.atan2(dy, dx);
        enemyBall.x += Math.cos(radian) * speed;
        enemyBall.y += Math.sin(radian) * speed;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22811589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档