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

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

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

Регистрация: Mar 2009
Сообщений: 29
Attention onEnterFrame.... теряется переменная

Доброго времени суток!

По ходу выполнения функции внутри которой динамически формируются мувики, при событии onEnterFrame - теряется переменая. Чувствую что подвох вообще копеечный - но разобраться не могу.

Код AS1/AS2:
 
var my_array:Array =info.split('^');
for(i=0;i<20;i++)
  {
 
setTimeout(addPart, 300 * i, my_array[i]);
 
}
 
function addPart()
  {
 
	_root.createEmptyMovieClip("next" + _root.f, _root.f+1);
    eval("_root.next" +_root.f)._x=_root.f1, eval("_root.next" +_root.f)._y=_root.f2;
	eval("_root.next" +_root.f).attachMovie("buttons", "test1", 9);
 
	eval("_root.next" +_root.f).createEmptyMovieClip("img", 112);
	eval("_root.next" +_root.f).img._x=-7, eval("_root.next" +_root.f).img._y=-1;
	eval("_root.next" +_root.f).img.createEmptyMovieClip("imgg", 112);
	eval("_root.next" +_root.f).img.imgg._x=-87, eval("_root.next" +_root.f).img.imgg._y=-37;
	loadMovie("http://localhost/data/img/"+ arguments +".jpg", eval("_root.next" +_root.f).img.imgg);
 
 
		var temp=arguments;
 
 
 
	eval("_root.next" +_root.f).onEnterFrame = function (f)
{
 
		if(this.test1._currentframe==5)
	{
	this.text_movie._visible=true;
 
	trace(temp);  ///здесь
 
	}
	else
	{
		this.text_movie._visible=false;
	}
}
 
 
 
  }

в месте где стоит trace(temp) выходит или значение из моего массива или undefined - т.е. всё нормально, так как надо. Если здесь же добавляю
Код AS1/AS2:
if(temp == undefined)
{
trace(111); 
 
 
}
то в это условие не попадаю значения которые при трасировки определяется как undefined. В чём тут дело?

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
1. Если используете строгую типизацию, то используйте ее везде.
2. Забудь при eval и километры путей. Используйте ссылки.
3. Если вы аттачите клип, то зачем внутри его манипуляции с созданием img и imgg? Сделайти сразу готовую структуру.
4. Ваша переменная temp существовала на время жизни исполнения функции addPart, потом он попадала в рай переменных. Ее надо было создавать внутри мувиклипа.
Код AS1/AS2:
var my_array:Array = info.split ('^');
for (var i:Number = 0; i < 20; i++) {
	setTimeout (addPart, 300 * i, my_array[i]);
}
function addPart () {
	var mc:MovieClip = _root.createEmptyMovieClip ("next" + _root.f, _root.f + 1);
	mc._x = _root.f1
	mc._y = _root.f2;
	mc.attachMovie ("buttons", "test1", 9);
	var mcImg:MovieClip = mc.createEmptyMovieClip ("img", 112);
	mcImg._x = -7;
	mcImg._y = -1;
	var mcImg2:MovieClip = mcImg.createEmptyMovieClip ("imgg", 112);
	mcImg2._x = -87
	mcImg2._y = -37;
	mcImg2.loadMovie ("http://localhost/data/img/" + arguments + ".jpg");
	var temp = arguments;
	mc.temp = arguments;
	mc.onEnterFrame = function (f) {
	mc.onEnterFrame = function () {
		if (this.test1._currentframe == 5) {
			this.text_movie._visible = true;
			trace (this.temp);
			///здесь
		} else {
			this.text_movie._visible = false;
		}
	};
}
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: Mar 2009
Сообщений: 29
Спасибо за рекомендации. Но даже в таком виде - проблема осталась таже. В трайсе есть undefined, а в условия они не попадают...

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

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

Старый 06.03.2009, 19:20
micoloss вне форума Посмотреть профиль Отправить личное сообщение для micoloss Найти все сообщения от micoloss
  № 5  
Ответить с цитированием
micoloss

Регистрация: Mar 2009
Сообщений: 29
самое смешное что я даже сделал вот так - а в условие всё равно не попадает

Код AS1/AS2:
 
for (var i:Number = 0; i < 20; i++) {
	setTimeout (addPart, 300 * i, i);
}
function addPart () {
	var mc:MovieClip = _root.createEmptyMovieClip ("next" + _root.f, _root.f + 1);
	mc._x = _root.f1
	mc._y = _root.f2;
	mc.attachMovie ("buttons", "test1", 9);
	var mcImg:MovieClip = mc.createEmptyMovieClip ("img", 112);
	mcImg._x = -7;
	mcImg._y = -1;
	var mcImg2:MovieClip = mcImg.createEmptyMovieClip ("imgg", 112);
	mcImg2._x = -87
	mcImg2._y = -37;
	mcImg2.loadMovie ("http://localhost/data/img/" + arguments + ".jpg");
 
	mc.temp = arguments;
 
	mc.onEnterFrame = function () {
 
if(this.temp == "1") // не попадает в это условие
	{
		trace(111);
 
	}
	};
}
видимо дело в чём то другом.

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Код AS1/AS2:
for (var i:Number = 0; i < 20; i++) {
	setTimeout (addPart, 300 * i, i);
}
function addPart (name:String) {
	var mc:MovieClip = _root.createEmptyMovieClip ("next" + _root.f, _root.f + 1);
	mc._x = _root.f1;
	mc._y = _root.f2;
	mc.attachMovie ("buttons", "test1", 9);
	var mcImg:MovieClip = mc.createEmptyMovieClip ("img", 112);
	mcImg._x = -7;
	mcImg._y = -1;
	var mcImg2:MovieClip = mcImg.createEmptyMovieClip ("imgg", 112);
	mcImg2._x = -87;
	mcImg2._y = -37;
	mcImg2.loadMovie ("http://localhost/data/img/" + name + ".jpg");
	mc.temp = name;
	mc.onEnterFrame = function () {
		if (this.temp == "1") {
			// не попадает в это условие
			trace (111);
		}
	};
}
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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