2010-01-19 4 views
0

В моей игре у меня есть самолеты, которые пролетели мимо экрана сверху вниз. когда воздушные самолеты падают, я уменьшаю их, чтобы они выглядели так, как будто они падают ближе к земле и дальше от экрана. У меня есть башенки на этих ремеслах. они являются отдельными объектами из плана полета. Я также уменьшаю их. Единственная проблема заключается в том, что они неправильно переупорядочиваются. они остаются в своих положениях x и y, хотя их масштабируют, похоже, что их отводят от воздушного самолета. возможно ли их правильно установить на основании размера на объекте, на котором они сидят (то есть на воздушных плоскостях)Перемещение объектов по шкале

Я просто получил хороший ответ из другого сообщения, чтобы поместить их в самый мувиклип. что здорово, но для записи, если кто-нибудь знает ответ на этот вопрос, это было бы здорово.

ответ

1

Вы должны хранить все для каждого самолета внутри своего собственного MovieClip. Но по-прежнему полезно знать, как это сделать без встроенного scaleX/scaleY. С вашей текущей настройкой это можно сделать так (где плоскость - это ваша плоскость, масштаб - это коэффициент (между 0-1), который вы собираетесь масштабировать на плоскость, а башня - это башня, которая должна быть масштабирована относительно самолет):

function scalePlane(plane, turret, scale:Number):void { 

    //scaling coordinates: 
    var relativeX:Number = turret.x - plane.x; 
    var relativeY:Number = turret.y - plane.y; 
    var newRelativeX:Number = relativeX*scale; 
    var newRelativeY:Number = relativeY*scale; 
    turret.x = plane.x + newRelativeX; 
    turret.y = plane.y + newRelativeY; 
    //scaling size: 
    turret.scaleX *= scale; 
    turret.scaleY *= scale; 
    plane.scaleX *= scale; 
    plane.scaleY *= scale; 
} 

scalePlane(plane1, turret1, 0.9); 
//overall scale is 0.9; 
//next frame: 
scalePlane(plane1, turret1, 0.9); 
//now the overall scale is 0.81 because you are multiplying the scales 

Я не проверял это, но он должен работать до тех пор, пока у самолета и башни одинаковые родители. Обратите внимание, что масштаб в этом случае относительный, поэтому вам, возможно, придется немного изменить свои вычисления. (если бы вы дважды набрали этот код со шкалой 0,5, тогда плоскость имела бы шкалу 0,5 * 0,5 = 0,25)

+0

спасибо. Я держу все внутри мувиклипа, но он, похоже, не слушает мой турельный класс, когда я делаю так. должно ли это быть? я что-то делаю неправильно – numerical25

+0

никогда, я знаю, почему сейчас. Я настроил его в своем игровом движке, где используется только один цикл. и все классы используют метод updateObject для обновления своего состояния для каждого кадра. так как я помещаю свои турели внутри мувиклипа, а не добавляю их таким образом, что он не в состоянии правильно работать – numerical25

+0

Единственная причина, по которой я сделал это так, так что мне не нужно беспокоиться об уничтожении всех eventobjects eventlisteners и петель. Если я добавлю прослушиватель событий в свой класс туретов и добавлю их прямо в мой мувиклип плоскости. они будут уничтожены, когда я уничтожу самолет – numerical25

Смежные вопросы