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
Actionscript 3 AS3加速计和;风的运动_Actionscript 3_Flash_Adobe Animate - Fatal编程技术网

Actionscript 3 AS3加速计和;风的运动

Actionscript 3 AS3加速计和;风的运动,actionscript-3,flash,adobe-animate,Actionscript 3,Flash,Adobe Animate,我正在使用标准的加速计模板&我试图在球上创建一个风的效果,但是我很难让我的编码风移动球,因为球似乎只响应加速计的移动 有没有办法在不禁用加速计的情况下移动球 我已经设置了风向和强度,但当我测试时,即使屏幕是平的,球在屏幕中央,风变量/代码也没有影响 我正在使用的风移动球函数的一个例子是 if (windD == "left") {ball.x -= ball.x-WindStrength;} if (windD == "right")

我正在使用标准的加速计模板&我试图在球上创建一个风的效果,但是我很难让我的编码风移动球,因为球似乎只响应加速计的移动

有没有办法在不禁用加速计的情况下移动球

我已经设置了风向和强度,但当我测试时,即使屏幕是平的,球在屏幕中央,风变量/代码也没有影响

我正在使用的风移动球函数的一个例子是

        if (windD == "left")
            {ball.x -= ball.x-WindStrength;}
        if (windD == "right")
            {ball.x += ball.x+WindStrength;}
任何想法。

好的,我想出来了

我的问题是,我试图在加速度计运动功能之外的自身功能中添加一个风运动功能

解决方案:将我的风代码移动到加速度计功能中:

ball.addEventListener(Event.ENTER_FRAME, moveBall);
function moveBall(evt:Event){
ball.x -= accelX*10;
ball.y += accelY*10;

if(ball.x > (480-ball.width/2)){
    ball.x = 480-ball.width/2;
}
if(ball.x < (0+ball.width/2)){
    ball.x = 0+ball.width/2;
}
if(ball.y > (800-ball.width/2)){
   ball.y = 800-ball.width/2;
}
if(ball.y < (0+ball.width/2)){
    ball.y = 0+ball.width/2;
}

  // Wind Functions
   //Wind Strength
    if (this.Stage_Txt_Box.text == "1")
            {WindStrength = int(2);}
    if (this.Stage_Txt_Box.text == "2")
            {WindStrength = int(3);}
    if (this.Stage_Txt_Box.text == "3")
            {WindStrength = int(4);}
    if (this.Stage_Txt_Box.text == "4")
            {WindStrength = int(5);}    
    if (this.Stage_Txt_Box.text == "5")
            {WindStrength = int(6);}
    if (this.Stage_Txt_Box.text == "6")
            {WindStrength = int(7);}
        if (this.Stage_Txt_Box.text == "7")
            {WindStrength = int(8);}
        if (this.Stage_Txt_Box.text == "8")
            {WindStrength = int(9);}            

        //Wind Directions
        trace(WindStrength);

        if (windD == "left")
            {ball.x -= WindStrength; trace("Wind is blowing left");}
        if (windD == "right")
            {ball.x += WindStrength; trace("Wind is blowing right");}
        if (windD == "up")
            {ball.y -= WindStrength; trace("Wind is blowing up");}
        if (windD == "down")
            {ball.y += WindStrength; trace("Wind is blowing down");}    
     }
ball.addEventListener(Event.ENTER\u FRAME,moveBall);
功能移动球(evt:事件){
ball.x-=加速度x*10;
ball.y+=加速度*10;
如果(球x>(480球宽/2)){
球体x=480-球体宽度/2;
}
如果(球x<(0+球宽/2)){
ball.x=0+ball.width/2;
}
如果(球y>(800球宽/2)){
球体y=800-球体宽度/2;
}
如果(球y<(0+球宽/2)){
球体y=0+球体宽度/2;
}
//风函数
//风力
如果(this.Stage\u Txt\u Box.text==“1”)
{风力=int(2);}
如果(this.Stage\u Txt\u Box.text==“2”)
{风力=int(3);}
如果(this.Stage\u Txt\u Box.text==“3”)
{风力=int(4);}
如果(this.Stage\u Txt\u Box.text==“4”)
{风力=int(5);}
如果(this.Stage\u Txt\u Box.text==“5”)
{风力=int(6);}
如果(this.Stage\u Txt\u Box.text==“6”)
{风力=int(7);}
如果(this.Stage\u Txt\u Box.text==“7”)
{风力=int(8);}
如果(this.Stage\u Txt\u Box.text==“8”)
{风力=int(9);}
//风向
痕迹(风力);
如果(风=左)
{ball.x-=风力;痕迹(“风在向左吹”);}
如果(windD==“右”)
{ball.x+=风力;轨迹(“风吹对了”);}
如果(发条=“向上”)
{ball.y-=风力;痕迹(“风在吹”);}
如果(缠绕=“向下”)
{ball.y+=风力;轨迹(“风在吹”);}
}

首先,您可以使用+=1;或使用a=a+1;-它们具有相同的效果。您不能同时使用这两个选项,不是因为它不正确,而是因为它令人困惑。然后,如果windD==“left”,混乱的部分会导致ball.x始终等于WindStrength。这可能就是你的问题所在。关于WindStrength的难看的块可以用一行来代替:WindStrength=Math.min(9,Math.max(2,1+parseInt(Stage_Txt_Box.text));老实说,在你的位置上,我只会使用一个同时定义力量和方向的
点,就像你在游戏中处理速度一样。