2014-11-24 74 views
0

我正在做我的第一個Flash AS遊戲,所以需要一點幫助。 我在舞臺上只有一件東西,它的中間有一個錨點的球(圖層實例)。我試圖讓這個球從牆上反彈(我的意思是屏幕)。ActionScript 3舞臺寬度

該實例名被稱爲 'kugla1'

繼承人我的代碼(其第2張):

if(kugla1.x<=kugla1.width/2 || kugla1.x>=stage.stageWidth-kugla1.width/2) 
speedX=-speedX; 
if(kugla1.y<=kugla1.height/2 || kugla1.height>=stage.stageHeight-kugla1.height/2) 
speedY=-speedY; 

kugla1.x+=speedX; 
kugla1.y+=speedY; 

第一幀是:

var speedX:int=5; 
var speedY:int=5; 

kugla1.x=100; 
kugla1.y=100; 

而第三幀只有:

gotoAndPlay(2); 

我做錯了什麼?

謝謝!

+0

您忽略聲明什麼問題是。 – BadFeelingAboutThis 2014-11-24 18:45:04

回答

0

你的問題,很可能是這一行:

if(kugla1.y<=kugla1.height/2 || kugla1.height>=stage.stageHeight-kugla1.height/2) 

在第二部分(||後)你在比較的kugla1,而不是y位置的高度。

另一個可能遇到的問題是,您的球可能會遇到相同的情況超過一幀,所以最好將您的速度與當前移動方向分開。

見代碼註釋:

關於第一個幀,則需要兩個額外的變量:你的第二個框架

var speedX:int=5; 
var speedY:int=5; 
var curSpeedX:Number = speedX; 
var curSpeedY:Number = speedY; 

if(kugla1.x <= kugla1.width/2){ 
    curSpeedX = speedX; //we need the positive value to make it go right 
} 
if(kugla1.x >= stage.stageWidth - kugla1.width/2){ 
    curSpeedX = -speedX; //we need the negative value to make it go left 
} 

if(kugla1.y <= kugla1.height/2){ 
    curSpeedY = speedY; //we need the positive value to make it go down 
} 

if(kugla1.y >= stage.stageHeight - kugla1.height/2){ 
    curSpeedY = -speedY; //we need the negative value to make it go up 
} 

kugla1.x+= curSpeedX; 
kugla1.y+= curSpeedY; 
+0

謝謝!幫助很多:) – Dominik 2014-11-24 19:10:06

相關問題