Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.04.2009, 01:37
Mtnt вне форума Посмотреть профиль Отправить личное сообщение для Mtnt Найти все сообщения от Mtnt
  № 1  
Ответить с цитированием
Mtnt

Регистрация: Apr 2009
Сообщений: 95
Question 1037: packege connot be nested

Доброго времени суток.
Сразу прошу прощения за создание подобной темы, но я во флеше ничего не понимаю (надеюсь, "пока"), а сделать надо срочно и нет времени рыть мануалы.

Дело такое: надо двигать несколько элементов, когда мышь попадает на область флешки.

Немножко почитав про события, написал вот такой код:
Код AS3:
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');
		}
	}
}
Предварительно создав слой с елементом, названным "rect_1" и слой action, куда выше приведенный код и вставил.

вместо "trace('a');" должна стоять функция, которая будет двигать rect_1 (тоже не знаю как сделать, в AS2 видел "_x", но это же 3-я версия)

С какой то верхушки ухватил, что надо это вынести в отдельный файл и подключать, но хз как это сделать.

Помогите, если не сложно.
Заранее спасибо.

Старый 21.04.2009, 01:47
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 2  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Если это основной класс приложения, то сохраняем код выше под именем Rect_move.as, а на панели Properties прописываем Rect_move в поле Document Class. Далее исправляем имя функции rect_move на Rect_move.

В AS3 x действует так же, как и в AS2, но теперь не "_x", а "x".

Ошибка возникает, так как код из кадров в Вашем случае вставляется внутрь автоматически сгенерированного класса, что образует вложенность package-ей
__________________
4am is time to rock

Старый 21.04.2009, 02:54
Mtnt вне форума Посмотреть профиль Отправить личное сообщение для Mtnt Найти все сообщения от Mtnt
  № 3  
Ответить с цитированием
Mtnt

Регистрация: 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.
Старый 21.04.2009, 03:01
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 4  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Код AS3:
import flash.events.TimerEvent;//!!!!!!!!!!!!
.......
public function rect_move (){
	var tick:Timer = new Timer(40,100);
	tick.addEventListener(TimerEvent.TIMER,tick_listener);
	tick.start();
}
 
private function tick_listener(e:TimerEvent):void{//!!!!!!!))
	trace('a');
}


Последний раз редактировалось r_r_f_r; 21.04.2009 в 03:13.
Старый 21.04.2009, 03:07
Mtnt вне форума Посмотреть профиль Отправить личное сообщение для Mtnt Найти все сообщения от Mtnt
  № 5  
Ответить с цитированием
Mtnt

Регистрация: Apr 2009
Сообщений: 95
r_r_f_r, что Вы хотели этим сказать? Что мне надо прописать
Код AS3:
import flash.events.TimerEvent;
?
так эта строчка есть и в начальном коде.

Старый 21.04.2009, 03:18
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 6  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Ошибся, извиняюсь, должно всё работать, если этот класс как тут написан. Или код в кадре?

Старый 21.04.2009, 04:00
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 7  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
В вашем коде вы подписываетесь на событие TimerEvent, а слушаете Event (который в придачу еще и не импортировали).
Кроме всего прочего - уберите подчерки из названий классов. Подчерки используются в автосгенерированых методах / классах, в пользовательском коде их быть не должно, за следующими исключениями:
- в названиях констант.
Пример:
Код AS3:
public static const MY_CONSTANT:String = "myConstant";
- перед приватными переменными класса.
Пример:
Код AS3:
private var _foo:String = "bar";
- между частью имени функции-слушателя определяющей принадлежность слушателя к одной из переменных класса и частью определяющей тип события, которое он должен обрабатывать.
Пример:
Код AS3:
myButton.addEventListener(MouseEvent.CLICK, myButton_clickHandler);
__________________
Hell is the possibility of sanity

Старый 21.04.2009, 11:58
Mtnt вне форума Посмотреть профиль Отправить личное сообщение для Mtnt Найти все сообщения от Mtnt
  № 8  
Ответить с цитированием
Mtnt

Регистрация: Apr 2009
Сообщений: 95
Исходя из всего вышесказанного опишу то, что у меня есть:

в Document class прописано RectMove
единственный слой rect1, в котором есть элемент Movie Clip с именем rect1

и файл RectMove.as:
Код AS3:
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.
Старый 21.04.2009, 12:05
litebox вне форума Посмотреть профиль Отправить личное сообщение для litebox Найти все сообщения от litebox
  № 9  
Ответить с цитированием
litebox
 
Аватар для litebox

Регистрация: Jul 2008
Адрес: Украина, Киев
Сообщений: 253
во первых, нужно импортировать MovieClip:
Код AS3:
 import flash.display.MovieClip;
во вторых, у вас класс называется RectMove, а конструктор назван с ошибкой: RecMove

Старый 21.04.2009, 12:12
Mtnt вне форума Посмотреть профиль Отправить личное сообщение для Mtnt Найти все сообщения от Mtnt
  № 10  
Ответить с цитированием
Mtnt

Регистрация: Apr 2009
Сообщений: 95
яхууу)))
он зашевелился! =)
litebox и все, кто помогал, спасибо огромное

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:36.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:36.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.