2013-04-15 3 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

안녕하세요, Marty, 코드를 읽고 읽을 수있게하려고합니다. –

답변

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

vars를 입력하는 것이 좋습니다. var velx : Number = 5; var vely : Number = 5;

도움이 되길 바랍니다.

관련 문제