|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Oct 2014
Сообщений: 2
|
AS3 перемещение объекта вверж при клике, при повторном клике вернуть в исходную точку
Доброго времени суток!
Делаю небольшое приложение, столкнулся с проблемой. При нажатии на квадратик, он поднимается выше по оси y, но как сделать чтобы квадратики ещё и выравнивались по горизонтали вряд? Например нажал на 4 и 2 квадрат и они выровнялись по центру? А также как можно реализовать последующее возвращение в исходное начало при повторном клике по квадрату. Одним словом, как можно запомнить начальные координаты всех объектов? Прописывать вручную не подойдёт, т.к. объекты будут создаваться динамически. Прошу подсказать, как подобное можно реализовать? кусок кода такой: var koordinataX = 50; var koordinataY = 300; var massLetters:Array = new Array(); for (var i:int = 0; i<10; i++){ var letters:Letters = new Letters(); letters.x = koordinataX; koordinataX += 45; letters.y = koordinataY; massLetters.push(letters); addChild(massLetters[i]); massLetters[i].addEventListener(MouseEvent.CLICK, onClick); } function onClick(event:Event){ trace("Нажали, его имя: "+event.target.name); trace ("Координата по оси Y: "+event.target.x+" А это координата по оси Y: "+event.target.y) event.target.y -= 100; } |
|
|||||
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Могу показаться навязчивым, но прежде чем делать игры и приложения, я бы посоветовал Вам прочесть книги по as3,
того же Колина Мука, чтобы понять классы. Вам станет намного легче и помощи будет больше, так как я не уверен, что на этом форуме есть люди, которые пишут в кадрах. Если бы Вы писали в классах, то я смог бы, хотя бы, немного теоретически рассказать, как бы сделал я. |
|
|||||
Регистрация: Jul 2009
Сообщений: 149
|
Заведите в классе LEtters дополнительные поля запоминающие начальное положение и наличие смещения
public class Letters extends Sprite { public var startPosition:Point; public var isOffset:Boolean = false; public function Letters(position:Point) { this.startPosition = position; } } var koordinataX:Number = 50; var koordinataY:Number = 300; var massLetters:Array = new Array(); for (var i:int = 0; i < 10; i++) { var letter:Letters = new Letters(new Point(koordinataX, koordinataY));; letter.x = koordinataX; letter.y = koordinataY; koordinataX += 45; massLetters.push(letter); addChild(letter); letter.addEventListener(MouseEvent.CLICK, onClick); } private function onClick(e:MouseEvent):void { var letter:Letters = e.currentTarget as Letters; if (letter.isOffset) { letter.x = letter.startPosition.x; letter.y = letter.startPosition.y; }else { letter.y -= 100; //Горизонтальное выравнивание по центру контейнера. letter.x = this.width / 2 - letter.width / 2; } letter.isOffset = !letter.isOffset; } |
|
|||||
Регистрация: Oct 2014
Сообщений: 2
|
Цитата:
|
Часовой пояс GMT +4, время: 00:43. |
|
« Предыдущая тема | Следующая тема » |
|
|