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

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

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

Регистрация: Nov 2010
Сообщений: 434
По умолчанию motionFinish

Как правильно сделать обработчик события motionFinish ???
сделал так:

Код AS3:
private var tween: Tween;
tween.addEventListener(TweenEvent.MOTION_FINISH, TweenFinished);
function TweenFinished(e: TweenEvent):void{
	trace("Ок");
}
вместо того чтобы вывести "Ok" появляется ошибка
Код AS3:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
	at Animation()
	at flash.display::Sprite/constructChildren()
	at flash.display::Sprite()
	at flash.display::MovieClip()
Что я сделал не так ???


Последний раз редактировалось ЗлОй ПрОграММер; 27.01.2011 в 12:22.
Старый 27.01.2011, 12:25
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 2  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
tween не создал?

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

Регистрация: Nov 2010
Сообщений: 434
Создал ! вообщем нашёл пример с motionFinish и переделал свой код, в нём два раза описал событие
Код AS3:
tween.addEventListener(TweenEvent.MOTION_FINISH, TweenFinished);
и всё заработало
Код AS3:
function MouseOver(e: MouseEvent):void{
        MOver = true;
	Mouse.cursor = MouseCursor.BUTTON;
	tween = new Tween(this, "y", Bounce.easeOut, y, stateY+7, 10, false);
	tween.addEventListener(TweenEvent.MOTION_FINISH, TweenFinished);		
	}
 
function MouseOut(e: MouseEvent):void{
		MOver = false;
		Mouse.cursor = MouseCursor.ARROW;	
		tween = new Tween(this, "y", None.easeNone, y, stateY, 5, false);
		tween.addEventListener(TweenEvent.MOTION_FINISH, TweenFinished);
}
ток вот вопрос два раза описать событие это приемлемо ?


Последний раз редактировалось ЗлОй ПрОграММер; 27.01.2011 в 12:37.
Старый 27.01.2011, 13:08
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 4  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
А ты покажи код, где создаешь.

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

Старый 27.01.2011, 13:08
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 5  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
вы два раза создаете объект. логично его каждый раз подписывать на нужные события (не описывать).
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 27.01.2011, 13:11
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 6  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Но у тебя два разных твина - поэтому приемлемо. Только твой подход не закончен - если навести мышь а потом быстро убрать - то второй твин начнется до того как закончится первый и элемент может зависнуть и ни тот ни другой твин не завершатся. Надо останавливать твин вобщем перед назначением нового.

Старый 27.01.2011, 14:41
ЗлОй ПрОграММер вне форума Посмотреть профиль Отправить личное сообщение для ЗлОй ПрОграММер Найти все сообщения от ЗлОй ПрОграММер
  № 7  
Ответить с цитированием
ЗлОй ПрОграММер

Регистрация: Nov 2010
Сообщений: 434
а я сделал событие когда анимация завершается, и там проверяется если картинка находится не там где положено она возвращается на место. вот весь этот мой безобразный код ))):
Код AS3:
package  {
 
	import flash.display.MovieClip;
	import fl.transitions.Tween;
	import fl.transitions.TweenEvent;
	import fl.transitions.easing.*;
	import flash.events.MouseEvent;
	import flash.events.Event;
	import flash.net.navigateToURL;
	import flash.net.URLRequest;
	import flash.ui.Mouse;
	import flash.ui.MouseCursor;
	fl.transitions.TweenEvent.MOTION_FINISH;
 
 
	public class Animation extends MovieClip{
 
		private var stateY: int = y;
		private var timeY: int;
		private var tween: Tween;
		private var time: int = 10;
		private var MOver: Boolean;
		public var url: String = "http://www.yandex.ru/";
 
		public function Animation() {
			addEventListener(MouseEvent.MOUSE_OVER, MouseOver);
			addEventListener(MouseEvent.MOUSE_OUT, MouseOut);
			addEventListener(MouseEvent.CLICK, MouseClick);
		}
 
		function MouseOver(e: MouseEvent):void{
			MOver = true;
			Mouse.cursor = MouseCursor.BUTTON;
			tween = new Tween(this, "y", Regular.easeOut, y, stateY+10, time, false);
			tween.addEventListener(TweenEvent.MOTION_FINISH, TweenFinished);
 
		}
 
		function MouseOut(e: MouseEvent):void{
			MOver = false;
			Mouse.cursor = MouseCursor.ARROW;	
			tween = new Tween(this, "y", None.easeNone, y, stateY, time, false);
			//tween.addEventListener(TweenEvent.MOTION_FINISH, TweenFinished);
		}
 
		function MouseClick(e: MouseEvent):void{
			navigateToURL(new URLRequest(url), "_self");
		}
 
		function TweenFinished(e: TweenEvent):void{
			if ((!MOver)&&(y != stateY))
				tween = new Tween(this, "y", None.easeNone, y, stateY, time, false);
		}
 
	}
 
}
вот сайт http://bfabyss-ussr.ucoz.ru/ на котором я выложил это меню, ошибок никаких вроде нет


Последний раз редактировалось ЗлОй ПрОграММер; 27.01.2011 в 14:51.
Старый 27.01.2011, 16:16
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 8  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
Проще воспользоваться сторонними либами, например Tweener \ TweenLite

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

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

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


 


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


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