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

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

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

Регистрация: May 2008
Сообщений: 102
По умолчанию События Класса Tween

Изучаю Action Script.
Стало необходимо использовать Tween.
На чем пишу: CS3, AS2, Flash8
Фрагмент кода:
Код:
import mx.transitions.Tween;
...
class Car {
...
	public function Car(parent:MovieClip, car:Array) {
		...
		_tween = new Tween();
		_tween.onMotionFinished = Delegate.create(this, onMotionFinished);
		_tween.onMotionStopped = _tween.onMotionFinished;
	}
...
	private function onMotionFinished() {
		_root.instructions_txt.text = "I'm Here!";
		trace(_tween);
	}
...
Так же в классе есть метод где для _tween собираются настройки, и делается _tween.start();
instructions_txt - это текст который поверх всего выводит дебажную инфу.
Проблема: onMotionFinished не выполняется (I'm Here! не выводится).
Читал статьи про Tween, вроде имена событий написаны без ошибок, но в редакторе, они не подсвечиваются характерным синим цветом.
Как быть?


Последний раз редактировалось iNils; 13.06.2008 в 17:07.
Старый 13.06.2008, 17:11
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Код:
_tween = new Tween();
А где параметры?
Цитата:
но в редакторе, они не подсвечиваются характерным синим цветом.
Это внешние классы, и их методы и свойства в список подсветки почему не включены. Но роли это не играет.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: May 2008
Сообщений: 102
Переписал вот так:
Код:
import mx.transitions.Tween;
import mx.transitions.easing.*;
import mx.transitions.TweenEvent;
import mx.motion.*;
...
class Car {
...
	public function Car(parent:MovieClip, car:Array) {
		...
		_tween = new Tween();
		_tween.addEventListener(TweenEvent.MOTION_FINISH, this.tweenFinished);
	}
...
	private function tweenFinished(e:TweenEvent) {
		_root.instructions_txt.text = "I'm Here!";
		trace(_tween);
	}
...
Но пишет "The class or interface 'fl.transitions.TweenEvent' could not be loaded." Жалуясь на строку "private function tweenFinished(e:TweenEvent) {"

Цитата:
Сообщение от iNils Посмотреть сообщение
А где параметры?
Параметры все задаются в другом методе -

Код:
	public function MoveCar(from:Number, to:Number, speed:Number):Void {

		Mask_a = GetPath(from,to);
		car_speed = speed?speed:10;
		_tween.func = None.easeNone;
		_tween.duration = car_speed;
	
///Другие параметры вычисляются
		_tween.obj = ...;
		_tween.begin = ...
		_tween.finish = ...;
		_tween.start();

	}
Я создаю один Tween и одним методом меняю ему параметры на мне нужные и стартую.


Последний раз редактировалось iNils; 13.06.2008 в 17:35.
Старый 13.06.2008, 17:21
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Зачем? Такой подход рано или поздно приведет к ошибке, если первый твин не отработался, а вы задаете ему новые параметры?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 13.06.2008, 17:26
ekeeper вне форума Посмотреть профиль Отправить личное сообщение для ekeeper Найти все сообщения от ekeeper
  № 5  
Ответить с цитированием
ekeeper

Регистрация: May 2008
Сообщений: 102
Цитата:
Сообщение от iNils Посмотреть сообщение
Зачем? Такой подход рано или поздно приведет к ошибке, если первый твин не отработался, а вы задаете ему новые параметры?
За этим мне и нужна эта функция.

Код:
	private function onMotionFinished() {
		_root.instructions_txt.text = "I'm Here!";
		trace(_tween);
	}
вместо trace всяких я поставлю код который ТОЛЬКО после отработки твина ставит ему новые параметры. Только вот вызывался бы этот метод сначала...

Старый 13.06.2008, 17:52
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Сообщение от ekeeper Посмотреть сообщение
Но пишет "The class or interface 'fl.transitions.TweenEvent' could not be loaded." Жалуясь на строку "private function tweenFinished(e:TweenEvent) {"
Не путайте AS2 c AS3
Попробуйте сначала написать классическим способом, то есть задавая параметры в new Tween

И мультипостинг у нас запрещен. Редактируйте последнее ваше сообщение.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 16.06.2008, 19:00
ekeeper вне форума Посмотреть профиль Отправить личное сообщение для ekeeper Найти все сообщения от ekeeper
  № 7  
Ответить с цитированием
ekeeper

Регистрация: May 2008
Сообщений: 102
Заработало. Но остался один косяк.

Сначала опишу что надо получить в конце - объект (мувик) движется по прямым линиям - поворачивает под прямым углом.

То есть:
- расчитывается начальная и конечная точка прямой
- объект двигается (None.easeNone)
- как только заканчивается движение идет переход в onMotionFinished
- в onMotionFinished расчитывается следующая точка и делается new Tween с новыми настройками

переменная твина объявлена одна - то есть каждый раз new Tween инициализируется в одной переменной.

Проблемы:
1. На "поворотах" все притормаживается. Движение по кривой получается не плавное а с "паузами" в углах
(сделал onMotionFinished, чтобы использовался прежний объект но с другими настройками, а не new Tween - залипать стало меньше, но все равно)
2. Иногда объект не движется, а просто перепрыгивает из начальной точки в конечную - хлоп и все.


UPD: Решил проблему 1 перейдя на Regular.easeInOut - дело в том, что объект - машинка - для нее логично ускоряться, а на поворотах снижать скорость - выглядит естественно. С перепрыгиванием бы теперь решить

UPD: Все проблемы решены ))


Последний раз редактировалось ekeeper; 17.06.2008 в 16:46.
Создать новую тему Ответ Часовой пояс GMT +4, время: 13:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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