Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AS3使敌人向鼠标移动 包{ 输入敌人; 导入flash.display.Sprite; 导入flash.events.*; 公共类Main扩展了Sprite{ //存放敌人的地方 公敌:敌人; 私有函数handleEnterFrame(e:事件):void{ tweenIt(敌方x,mouseX,2); } 私有函数tweenIt(变量:Number,目标:Number,速度:Number):void{ if(变量目标){ 可变-=速度; } } //这是在我们的应用程序中运行的第一个代码 公共函数Main():void{ addEventListener(Event.ENTER_FRAME,HandleInterframe); //我们创造了敌人,并将其储存在我们的变量中 敌人=新敌人(); //我们把敌人添加到舞台上 addChild(敌人) 敌方.x=Math.random()*stage.stageWidth; friend.y=Math.random()*stage.stageHeight; } } }_Flash_Actionscript 3_Mouse_Flashdevelop_Enterframeevent - Fatal编程技术网

AS3使敌人向鼠标移动 包{ 输入敌人; 导入flash.display.Sprite; 导入flash.events.*; 公共类Main扩展了Sprite{ //存放敌人的地方 公敌:敌人; 私有函数handleEnterFrame(e:事件):void{ tweenIt(敌方x,mouseX,2); } 私有函数tweenIt(变量:Number,目标:Number,速度:Number):void{ if(变量目标){ 可变-=速度; } } //这是在我们的应用程序中运行的第一个代码 公共函数Main():void{ addEventListener(Event.ENTER_FRAME,HandleInterframe); //我们创造了敌人,并将其储存在我们的变量中 敌人=新敌人(); //我们把敌人添加到舞台上 addChild(敌人) 敌方.x=Math.random()*stage.stageWidth; friend.y=Math.random()*stage.stageHeight; } } }

AS3使敌人向鼠标移动 包{ 输入敌人; 导入flash.display.Sprite; 导入flash.events.*; 公共类Main扩展了Sprite{ //存放敌人的地方 公敌:敌人; 私有函数handleEnterFrame(e:事件):void{ tweenIt(敌方x,mouseX,2); } 私有函数tweenIt(变量:Number,目标:Number,速度:Number):void{ if(变量目标){ 可变-=速度; } } //这是在我们的应用程序中运行的第一个代码 公共函数Main():void{ addEventListener(Event.ENTER_FRAME,HandleInterframe); //我们创造了敌人,并将其储存在我们的变量中 敌人=新敌人(); //我们把敌人添加到舞台上 addChild(敌人) 敌方.x=Math.random()*stage.stageWidth; friend.y=Math.random()*stage.stageHeight; } } },flash,actionscript-3,mouse,flashdevelop,enterframeevent,Flash,Actionscript 3,Mouse,Flashdevelop,Enterframeevent,敌方类嵌入了位图。我正在使用FlashDevelop进行编程。当我执行类似于敌方.x+=1的操作时,它会工作,但当我尝试使用tween-it脚本时,无论鼠标的位置如何,敌方都会静止不动。 非常感谢。 Blobstah您正在将敌人的x位置的值传递给您的tweenIt函数,更改该值,然后丢弃结果 换句话说,变量是与敌方.x不同的变量,尽管它的起始值来自敌方.x 解决此问题的一种方法是将参数更改为实际敌人的参考: package { import enemies.Enemy; import flas

敌方类嵌入了位图。我正在使用FlashDevelop进行编程。当我执行类似于敌方.x+=1的操作时,它会工作,但当我尝试使用tween-it脚本时,无论鼠标的位置如何,敌方都会静止不动。 非常感谢。 Blobstah

您正在将敌人的
x
位置的值传递给您的
tweenIt
函数,更改该值,然后丢弃结果

换句话说,
变量
是与
敌方.x
不同的变量,尽管它的起始值来自
敌方.x

解决此问题的一种方法是将参数更改为实际敌人的参考:

package {

import enemies.Enemy;
import flash.display.Sprite;
import flash.events.*;

public class Main extends Sprite {

    // a place to store the enemy
    public var enemy:Enemy;

    private function handleEnterFrame(e:Event):void {
        tweenIt(enemy.x, mouseX, 2);
    }

    private function tweenIt(variable:Number, target:Number, speed:Number):void{
        if (variable < target) {
            variable += speed;
        }

        if (variable > target) {
            variable -= speed;
        }
    }

    // this is the first code that is run in our application
    public function Main():void {

        addEventListener(Event.ENTER_FRAME, handleEnterFrame);
        // we create the enemy and store him in our variable
        enemy = new Enemy();

        // we add the enemy to the stage 
        addChild(enemy)

        enemy.x = Math.random() * stage.stageWidth;
        enemy.y = Math.random() * stage.stageHeight;

    }

}

}
私有函数handleEnterFrame(e:事件):无效{
tweenIt(敌人,mouseX,2);
}
私有函数tweenIt(敌人:敌人,目标:数字,速度:数字):无效{
如果(anEnemy.x<目标){
anEnemy.x+=速度;
}
// ...
}
您正在将敌人的
x
位置的值传递给您的
tweenIt
函数,更改该值,然后丢弃结果

换句话说,
变量
是与
敌方.x
不同的变量,尽管它的起始值来自
敌方.x

解决此问题的一种方法是将参数更改为实际敌人的参考:

package {

import enemies.Enemy;
import flash.display.Sprite;
import flash.events.*;

public class Main extends Sprite {

    // a place to store the enemy
    public var enemy:Enemy;

    private function handleEnterFrame(e:Event):void {
        tweenIt(enemy.x, mouseX, 2);
    }

    private function tweenIt(variable:Number, target:Number, speed:Number):void{
        if (variable < target) {
            variable += speed;
        }

        if (variable > target) {
            variable -= speed;
        }
    }

    // this is the first code that is run in our application
    public function Main():void {

        addEventListener(Event.ENTER_FRAME, handleEnterFrame);
        // we create the enemy and store him in our variable
        enemy = new Enemy();

        // we add the enemy to the stage 
        addChild(enemy)

        enemy.x = Math.random() * stage.stageWidth;
        enemy.y = Math.random() * stage.stageHeight;

    }

}

}
私有函数handleEnterFrame(e:事件):无效{
tweenIt(敌人,mouseX,2);
}
私有函数tweenIt(敌人:敌人,目标:数字,速度:数字):无效{
如果(anEnemy.x<目标){
anEnemy.x+=速度;
}
// ...
}

我不是AS3开发人员,因此如果您的代码有任何问题,我无法帮助您,但如果您不确定如何通过数学方法将敌人移向鼠标,请看下面的方法。(这不是代码,只是您想要计算的一般jist。我相信您可以将其转换为AS3。)

首先,找出敌人和你的鼠标之间的距离

private function handleEnterFrame(e:Event):void {
    tweenIt(enemy, mouseX, 2);
}

private function tweenIt(anEnemy:Enemy, target:Number, speed:Number):void{
    if (anEnemy.x < target) {
        anEnemy.x += speed;
    }

    // ...
}
然后,找到将敌人指向鼠标所需的旋转

xDistance = enemyPositionX - mousePositionX;
yDistance = enemyPositionY - mousePositionY;
最后,这里是您想要在tweenIt函数中添加的内容,以将敌人移向鼠标(每个函数调用3个像素)


就这样!我之所以称赞它,是因为我在这里学会了如何做到这一点。

我不是AS3开发人员,所以如果您的代码有任何问题,我无法帮助您,但如果您不确定如何在数学上将敌人移向鼠标,下面是如何做到的。(这不是代码,只是您想要计算的一般jist。我相信您可以将其转换为AS3。)

首先,找出敌人和你的鼠标之间的距离

private function handleEnterFrame(e:Event):void {
    tweenIt(enemy, mouseX, 2);
}

private function tweenIt(anEnemy:Enemy, target:Number, speed:Number):void{
    if (anEnemy.x < target) {
        anEnemy.x += speed;
    }

    // ...
}
然后,找到将敌人指向鼠标所需的旋转

xDistance = enemyPositionX - mousePositionX;
yDistance = enemyPositionY - mousePositionY;
最后,这里是您想要在tweenIt函数中添加的内容,以将敌人移向鼠标(每个函数调用3个像素)


就这样!我之所以称赞卡梅伦,是因为我在这里学会了如何做到这一点。

所以,我要补充卡梅伦的答案

您可以创建一个更通用的函数来更改变量。我将在下面演示一个小示例

enemyPositionX -= 3 * cos(rotation);
enemyPositionY -= 3 * sin(rotation);
上述函数将更新所需变量的当前值,因此如果要键入以下内容:

private function tweenIt(anEnemy:Enemy, variableName:String, value:Number):void
{
    anEnemy[variableName] = value;
}

这会将你的敌人物体的宽度更新为200:),这应该可以做到:)

所以,要补充卡梅隆的答案

您可以创建一个更通用的函数来更改变量。我将在下面演示一个小示例

enemyPositionX -= 3 * cos(rotation);
enemyPositionY -= 3 * sin(rotation);
上述函数将更新所需变量的当前值,因此如果要键入以下内容:

private function tweenIt(anEnemy:Enemy, variableName:String, value:Number):void
{
    anEnemy[variableName] = value;
}

这会将你的敌人对象的宽度更新为200:),这应该可以做到:)

有没有其他方法可以更普遍地做到这一点?比如,让它和我扔给它的变量一起工作?thanx@Jonh:哦,不。你必须想其他方法来抽象它(想到接口和多态性)
blah+=4
只是
blah=blah+4
的简写;显然,
blah+4
部分将产生正确的值,但它不是被指定给对象的属性,而是被指定给
blah
(因此,您正在更改变量的值,但该变量与对象的属性完全无关--唯一的链接是该属性用于确定传递给函数的原始值)这实际上是可以做到的..anEnemy[“variableName”]=value;如果您使用它,它应该可以做到这一点:)@Michiel:Ooh,我忘了。你应该加上这一点作为回答。有没有更普遍的方式来做这件事?比如,让它和我扔给它的变量一起工作?thanx@Jonh:哦,不。你必须想其他方法来抽象它(想到接口和多态性)
blah+=4
只是
blah=blah+4
的简写;显然,
blah+4
部分将产生正确的值,但不是指定给对象的属性,而是