2013-04-15 25 views
0

我是Actionscript3的初學者,我正在做我的作業來完成一個小遊戲,這裏是符合條件的最終效果:http://neowudesign.com/Ex03_hw.html。在這個遊戲中,蝴蝶將避免被用戶的光標所觸及。雖然我已經完成了這項工作,但由於我在編碼方面經驗不足,所以代碼非常尷尬。所以我想知道如何有效地優化我的代碼。這是我原來的代碼:我該如何優化我的Actionscript3代碼

import flash.geom.Rectangle; 
import flash.geom.Point; 
var rx:Number = 15; 
var ry:Number = 15; 
var rwidth:Number = 285; 
var rheight:Number = 185; 
var rect1:Rectangle = new Rectangle(rx,ry,rwidth,rheight); 
var velx = 5; 
var vely = 5; 




stage.addEventListener(MouseEvent.MOUSE_MOVE, avoidMe); 

function avoidMe(mouseEvent:MouseEvent):void 
{ 
trace("mouseX: "+ mouseX); 
trace("mouseY: "+ mouseY); 
var point_1:Point = new Point(mouseX,mouseY); 
var point_2:Point = new Point(myButterfly.x,myButterfly.y); 
var distanceBetween:Number = Point.distance(point_1,point_2); 
trace(distanceBetween);// 10 

if (distanceBetween < 20 && myButterfly.x >= 15 && myButterfly.x <= 285 && myButterfly.y >= 15 && myButterfly.y <= 185) 
{ 
    if (mouseX < myButterfly.x) 
    { 
     myButterfly.x += velx; 
     trace("x is moving left"); 
    } 
    else 
    { 
     myButterfly.x -= velx; 
     trace("x is moving right"); 
    } 


    if (mouseY < myButterfly.y) 
    { 
     myButterfly.y += vely; 
     trace("x is moving down"); 
    } 
    else 
    { 
     myButterfly.y -= vely; 
     trace("x is moving up"); 
    } 
} 

if (myButterfly.x > 285) 
{ 
    myButterfly.x = myButterfly.x - 40; 
    trace("hit the right"); 
} 

if (myButterfly.x < 15) 
{ 
    myButterfly.x = myButterfly.x + 40; 
    trace("hit the left"); 
} 



if (myButterfly.y > 185) 
{ 
    myButterfly.y = myButterfly.y - 40; 
    trace("hit the bottom"); 
} 

if (myButterfly.y < 15) 
{ 
    myButterfly.y = myButterfly.y + 40; 
    trace("hit the top"); 
} 

}

+1

你到底在問什麼?你是否想讓代碼更緊湊,更易讀,性能更好,轉換成實際的類而不是時間線代碼? – Marty

+0

嗨,馬蒂,我想讓我的代碼易讀和緊湊 –

回答

0

如果要壓縮你的代碼,你可以試試這個:

if (distanceBetween < 20 && myButterfly.x >= 15 && myButterfly.x <= 285 && myButterfly.y >= 15 && myButterfly.y <= 185) 
{ 
    myButterfly.x += (mouseX < myButterfly.x) ? velx : velx * -1; 

    myButterfly.y += (mouseY < myButterfly.y) ? vely : vely * -1; 

    // (expression) ? if expression true : if expression false; 
} 

if (myButterfly.x > 285) 
{ 
    myButterfly.x -= 40; 
    trace("hit the right"); 
} 

if (myButterfly.x < 15) 
{ 
    myButterfly.x += 40; 
    trace("hit the left"); 
} 

等等......

操作參考:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/operators.html#conditional

也許一個好主意,鍵入你的變量: var velx:Number = 5; var vely:Number = 5;

希望有所幫助。