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

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

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
По умолчанию [As2] Потеря видимости функции в классе

Проблема такая:
Я загружаю класс, после вызываю его с параметрами.
Код класса:
Код:
class classes.dot extends MovieClip{
	private var timeOut:Number;

	function dot(obj:MovieClip,delay:Number){
	timeOut=setInterval(this,"init",delay,obj);
	}
	
	
	function init(obj:MovieClip){
trace("Interval inited");
clearInterval(timeOut);
}
}
После, если я назначаю мс через linkage, все работает на ура.
Но если же я назначаю через new dot, то setInterval просто не видит функцию init. Дело не в имени функции - меня её пробовал.
Поиском пользовался, но все что нашел - отсуствие слова this в setInterval. Заранее благодарен.


Такс... вылез и 2 баг, похоже тоже из за области видимости...

Код:
class classes.dot extends MovieClip{
	private var objxTween,objyTween,objwTween,objhTween;
	private var timeOut:Number;

	function dot(obj:MovieClip,delay:Number,nextObj:MovieClip){
		//Initing dot
	//timeOut=setInterval(this,"init",delay,obj);
	obj._visible=false;
	init(obj,nextObj);
	}
	
	
	public function init(obj:MovieClip,nextObj:MovieClip){
	//clearInterval(timeOut);
	obj._visible=true;
	objwTween=new mx.transitions.Tween(obj, "_width", mx.transitions.easing.Elastic.easeOut, obj._width*5, obj._width, 1.7, true);
	objhTween=new mx.transitions.Tween(obj, "_height", mx.transitions.easing.Elastic.easeOut, obj._height*5, obj._height, 1.7, true);
	
	objhTween.onMotionFinished=function(){
		//Creating lines
		obj.lineStyle(2,0x000000,100);
		obj.moveTo(obj.getBounds(_root).xMin,obj.getBounds(_root).xMax);
		obj.lineTo(nextObj._x,nextObj._y);
	}
	}
	
	
	
}
В флэшке самой делаем код такой:

Код:
import classes.dot;

for (var i=1; i<=10; i++){
	m=attachMovie("dot","dot"+i,i,{_x: random(200)+100, _y:random(200)+100});
	if (i>1) new dot(m,10,z);
	z=m;
}
Запускаем... все точки приземлятся, после этого они должны нарисовать между собой линии... самое интересное, что линии рисуются правильно, но не там где надо... С чем это может быть связано?


Последний раз редактировалось Psycho Tiger; 10.09.2007 в 15:34.
Старый 10.09.2007, 16:06
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
По поводу первого бага: если создаешь через new, extends MovieClip убери, ты же не создаешь экземпляр мувиклипа.
У меня заработало без extends MovieClip. Чем это объясняется, я хз.

Старый 10.09.2007, 16:51
Tardos Mors вне форума Посмотреть профиль Отправить личное сообщение для Tardos Mors Найти все сообщения от Tardos Mors
  № 3  
Ответить с цитированием
Tardos Mors

Регистрация: Jul 2006
Адрес: Новосибирск
Сообщений: 530
Отправить сообщение для Tardos Mors с помощью ICQ
Мувики создаются через attachMovie, а не через new.
Если класс является подклассом мувиклипа, то его это тоже касается.

Старый 10.09.2007, 16:55
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 4  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Хм... и вправду работает, спасибо. У меня есть подозрение, что флэш смещает координаты сначала от _root к точкам, а после когда я прошу построить линии снова прибавляет их.

Тардос, ты не понял: мувики я создаю через attachMovie, а после даю классу dot их обработать.

Романтика! Если делать через setInterval 1 часть создания линии он видит... и все линии тянутся в непонятном направлении...


Последний раз редактировалось Psycho Tiger; 10.09.2007 в 17:02.
Создать новую тему Ответ Часовой пояс GMT +4, время: 08:37.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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