![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2009
Сообщений: 95
|
Доброго времени суток.
Сразу прошу прощения за создание подобной темы, но я во флеше ничего не понимаю (надеюсь, "пока"), а сделать надо срочно и нет времени рыть мануалы. Дело такое: надо двигать несколько элементов, когда мышь попадает на область флешки. Немножко почитав про события, написал вот такой код: package{ import flash.utils.Timer; import flash.events.TimerEvent; import flash.display.Sprite; public class Rect_move extends Sprite { public function rect_move (){ var tick:Timer = new Timer(40,100); tick.addEventListener(TimerEvent.TIMER,tick_listener); tick.start(); } private function tick_listener(e:Event):void{ trace('a'); } } } вместо "trace('a');" должна стоять функция, которая будет двигать rect_1 (тоже не знаю как сделать, в AS2 видел "_x", но это же 3-я версия) С какой то верхушки ухватил, что надо это вынести в отдельный файл и подключать, но хз как это сделать. Помогите, если не сложно. Заранее спасибо. |
|
|||||
|
ветеран форума
|
Если это основной класс приложения, то сохраняем код выше под именем Rect_move.as, а на панели Properties прописываем Rect_move в поле Document Class. Далее исправляем имя функции rect_move на Rect_move.
В AS3 x действует так же, как и в AS2, но теперь не "_x", а "x". Ошибка возникает, так как код из кадров в Вашем случае вставляется внутрь автоматически сгенерированного класса, что образует вложенность package-ей
__________________
4am is time to rock |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 95
|
теперь 1046: Type was not found or was not a compile-time constant: Event.
private function tick_listener(e:Event):void{ попробовал поставить private function tick_listener(e:TimerEvent):void{... выдал ту же ошибку, но в сорсе import flash.utils.Timer; Последний раз редактировалось Mtnt; 21.04.2009 в 02:56. |
|
|||||
|
Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
|
Последний раз редактировалось r_r_f_r; 21.04.2009 в 03:13. |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 95
|
r_r_f_r, что Вы хотели этим сказать? Что мне надо прописать
? так эта строчка есть и в начальном коде. |
|
|||||
|
Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
|
Ошибся, извиняюсь, должно всё работать, если этот класс как тут написан. Или код в кадре?
|
|
|||||
|
Modus ponens
|
В вашем коде вы подписываетесь на событие TimerEvent, а слушаете Event (который в придачу еще и не импортировали).
Кроме всего прочего - уберите подчерки из названий классов. Подчерки используются в автосгенерированых методах / классах, в пользовательском коде их быть не должно, за следующими исключениями: - в названиях констант. Пример: - перед приватными переменными класса. Пример: - между частью имени функции-слушателя определяющей принадлежность слушателя к одной из переменных класса и частью определяющей тип события, которое он должен обрабатывать. Пример:
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 95
|
Исходя из всего вышесказанного опишу то, что у меня есть:
в Document class прописано RectMove единственный слой rect1, в котором есть элемент Movie Clip с именем rect1 и файл RectMove.as: package{ import flash.utils.Timer; import flash.events.TimerEvent; import flash.display.Sprite; public class RectMove extends Sprite { public function RectMove (){ var tick:Timer = new Timer(40,100); tick.addEventListener(TimerEvent.TIMER,tickListener); tick.start(); } private function tickListener(e:TimerEvent):void{ rect1.x += 100; } } } 1046: Type was not found or was not a compile-time constant: MovieClip. source: import flash.utils.Timer; Последний раз редактировалось Mtnt; 21.04.2009 в 12:08. |
|
|||||
|
Регистрация: Jul 2008
Адрес: Украина, Киев
Сообщений: 253
|
во первых, нужно импортировать MovieClip:
во вторых, у вас класс называется RectMove, а конструктор назван с ошибкой: RecMove |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 95
|
яхууу)))
он зашевелился! =) litebox и все, кто помогал, спасибо огромное |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:36. |
|
|
« Предыдущая тема | Следующая тема » |
|
|