2014-11-24 2 views
0

Im, выполняющий мою первую игру с flash-игрой, так что вам нужна небольшая помощь. У меня есть только 1 вещь на сцене, ее мяч (экземпляр слоя), который имеет опорную точку посередине. Я пытаюсь заставить этот мяч отскакивать от стен (я имею в виду экран).ActionScript 3 stage width

Это имя экземпляра называется 'kugla1'

Heres мой код (его второй кадр):

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

ответ

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