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

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

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

Регистрация: Aug 2005
Адрес: Украина
Сообщений: 112
Отправить сообщение для hamstress с помощью ICQ Отправить сообщение для hamstress с помощью AIM Отправить сообщение для hamstress с помощью Skype™
По умолчанию в Tween.onMotionFinished не видно переменную из самого твина

Код класса (AS2):

Код:
import mx.transitions.Tween;
import mx.transitions.easing.*;

class Character {

	var currMc:MovieClip;
	var beginScale:Number;
	var TweenX:Tween;

	function Character(mc:MovieClip,x:Number, y:Number, scale:Number) {
		currMc = mc;
		trace("currMc: "+currMc);
		currMc._x = x;
		currMc._y = y;
		beginScale = scale;
		currMc._xscale = currMc._yscale=beginScale;
		inTweens();
	}

	function inTweens() {
		TweenX = new Tween(currMc, "_x", None.easeNone, currMc._x, currMc._x+40, 2, true);
		TweenX.onMotionFinished = function() {
			trace("currMc: "+currMc);
		};
	}
}
Экземпляр:

Код:
this.createEmptyMovieClip("characters_mc",this.getNextHighestDepth());
characters_mc.attachMovie("smokeFish","smokeFish",characters_mc.getNextHighestDepth());
var fish:Character = new Character(characters_mc.smokeFish,200, 200, 100);
в последнем
Код:
trace("currMc: "+currMc);
в коде класса выводит undefined, хотя твин первый раз срабатывает корректно.

Не могу понять почему.
если писать просто без класса. напрямую указывая MovieClip, к которому применяется Tween, работает корректно

Спасибо
__________________
http://www.every1knows.com

Старый 29.04.2010, 20:51
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Я тему все не прочел. Но по классу вы должны использовать Делегат чтобы было видно CurMc
Код AS1/AS2:
import mx.transitions.Tween;
import mx.transitions.easing.*;
 
class Character {
 
	var currMc:MovieClip;
	var beginScale:Number;
	var TweenX:Tween;
 
	function Character(mc:MovieClip,x:Number, y:Number, scale:Number) {
		currMc = mc;
		trace("currMc: "+currMc);
		currMc._x = x;
		currMc._y = y;
		beginScale = scale;
		currMc._xscale = currMc._yscale=beginScale;
		setTimeOut(mx.utils.Delegate.create(this,inTweens),10);
	}
 
	function inTweens() {
		TweenX = new Tween(currMc, "_x", None.easeNone, currMc._x, currMc._x+40, 2, true);
		TweenX.onMotionFinished = function() {
			trace("currMc: "+currMc);
		};
	}
}
Не обещаю что прокатит, просто я не помню как подгружать делагт класс без всего

Старый 29.04.2010, 21:01
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 3  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код AS1/AS2:
import mx.transitions.Tween;
import mx.transitions.easing.*;
import mx.utils.Delegate;
 
class Character
{
 
	private var currMc:MovieClip;
	private var beginScale:Number;
	private var tweenX:Tween;
 
	public function Character(mc:MovieClip, x:Number, y:Number, scale:Number)
	{
		currMc = mc;
		trace("currMc: " + currMc);
		currMc._x = x;
		currMc._y = y;
		beginScale = scale;
		currMc._xscale = beginScale;
		currMc._yscale = beginScale;
		inTweens();
	}
 
	private function inTweens():Void
	{
		tweenX = new Tween(currMc, "_x", None.easeNone, currMc._x, currMc._x + 40, 2, true);
		tweenX.onMotionFinished = Delegate.create(this, onMotionFinishedHandler);
	}
 
	private function onMotionFinishedHandler():Void
	{
		trace("currMc: " + currMc);
	}
}

Старый 29.04.2010, 21:54
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Во удаф это все понятно! А как запустит делагат подругому можно? Типа просто mx.utils.Delegate.create(this,f) разве нельзя ? Или тока сославшись на новую функцию, от внтурненнй можно?

Старый 29.04.2010, 22:02
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 5  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
Типа просто mx.utils.Delegate.create(this,f) разве нельзя ?
Можно и так конечно. Просто полное имя класса обычно пишется для того, чтобы точно указать на класс, например, когда существует еще один класс с таким же именем, но в другом пакете.
Цитата:
Или тока сославшись на новую функцию, от внтурненнй можно?
Этот вопрос не понял.

Старый 30.04.2010, 00:28
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Не !
Ты не понял. Я имел ввиду другой вопрос

Код AS1/AS2:
public function Character(mc:MovieClip, x:Number, y:Number, scale:Number)
	{
		currMc = mc;
		trace("currMc: " + currMc);
		currMc._x = x;
		currMc._y = y;
		beginScale = scale;
		currMc._xscale = beginScale;
		currMc._yscale = beginScale;
		mx.utils.Delegate.create(this,inTweens);
	}
Вот что я имел ввиду, как таким образом можно запустить!

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Тут без разницы, что с делегатом, что без делегата, метод inTweens() вызывается в области видимости объекта Character. А вложенная функция вызывается в области видимости TweenX, поэтому и currMc flash ищет в TweenX. Поэтому не годится такой вариант.

Старый 30.04.2010, 01:27
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 8  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Ну вот именно это я и спрашивал, как типа такое сделать можно без родительской функции

Старый 04.05.2010, 16:23
hamstress вне форума Посмотреть профиль Отправить личное сообщение для hamstress Найти все сообщения от hamstress
  № 9  
Ответить с цитированием
hamstress
 
Аватар для hamstress

Регистрация: Aug 2005
Адрес: Украина
Сообщений: 112
Отправить сообщение для hamstress с помощью ICQ Отправить сообщение для hamstress с помощью AIM Отправить сообщение для hamstress с помощью Skype™
Спасибо огромное.
Сама бы не нашла ответ
__________________
http://www.every1knows.com

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

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

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


 


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


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