PDA

Просмотр полной версии : onLoad???


as_68
12.04.2004, 18:02
Почему не грузится переменная txt в a1?

Timeline:
слой action
1 кадр
a1.onLoad=function(){
this.txt = "188";
}
слой mov
лежит a1

2 кадр
слой action
stop();
слой mov
лежит a1

Dindin
12.04.2004, 20:33
Дело в том, что событие onLoad доступно только для мувиклипов, созданных динамическим путем, то есть с помощью attachMovie() или duplicateMovieClip ();
И даже в случае с loadMovie () рекомендуется использовать onClipEvent(load);

Dimonius
12.04.2004, 21:13
2 Dindin
Бред написал.

2 as_68

А почему ты уверен, что

this .txt = "188";

это ссылка на нужный объект.

Dindin
12.04.2004, 21:27
2Dimonius по поводу события onLoad:

This handler can be used only with movie clips for which you have a symbol in the library that is associated with a class . If you want an event handler to be invoked when a specific movie clip loads, for example when you use MovieClip.loadMovie() to load a SWF file dynamically, you must use onClipEvent(load) instead of this handler. The latter handler is invoked when any movie clip loads.

Не я придумал :)

Dimonius
12.04.2004, 21:35
Вопрос внимательно прочитал?

Dindin
12.04.2004, 21:46
:) Внимательно. Она не грузиться потому, что событие onLoad для мувиклипа не созданного динамическим путем НЕ НАСТУПАЕТ НИКОГДА.
(Вывод, о том, что a1 - объект не динамический я делаю из того, что он ЛЕЖИТ НА СЛОЕ, то есть помещен на Stage до компиляции MovieClip'a)

:)
;)

Dimonius
12.04.2004, 21:51
Надо меньше пить :D
Это я лоханулся. Сорри.

Но this не факт что обращается туда куда надо.

Штрек
13.04.2004, 01:34
Оригинал написал(а) as_68
Почему не грузится переменная txt в a1?

Timeline:
слой action
1 кадр
a1.onLoad=function(){
this.txt = "188";
}
слой mov

Вместо этой хрени, напиши
a1.txt = "188";

as_68
13.04.2004, 11:01
Про a1.txt="188" я в курсе.
Просто ситуация следующаяя:
В _rootе лежат 10 мувиков (a1....a10), которым присваивается по 20 значений (txt1...txt20). Так вот чтобы не писать для каждого a1.txt1=....a1.txt20, хотелось написать
a1.onLoad=function(){
this.txt1 = "188";
...
this.txt20 = "388";
}
и менять имя мувика и значения txt для каждого .
Как этот процесс упростить если onLoad не работает? :confused:

для Dimonius
А почему ты уверен, что this .txt = "188";это ссылка на нужный объект.
a1.txt = "188";
a1.onRollOver = function() {
txt=this.txt; trace(txt);
}
РАБОТАЕТ!!!

Dindin
13.04.2004, 13:30
Читай ответы внимательнее. Событие onLoad в твоем случае не наступает. А кроме того - какая тебе разница где передавать двадцать значений - в функции или вне ее. (разве что когда ты это делаешь в функции - кода получается больше)
Если у тебя значения статические, то тебе в любом случае придется присваивать их вручную. Двадцать раз. Вот если динамические - совсем другое дело.

Dindin
13.04.2004, 13:38
Если я тебя правильно понял (ох, тяжкий это труд домысливать то, что неточно выразили), то дебе нужно задать двадцать переменных для объектов, которые называются a1,a2...a20. Причем первая переменная имеет значение 188, вторая - 198 (188+10), третья - 208 (198+10) и т.д с шагом 10.
тогда делаешь так
numObjects = 20;
currentVar = 188;
step =10;
for (var i=0;i<numObjects;i++)
{
_root['a'+i].txt = currentVar;
currentVar +=step;
}

as_68
13.04.2004, 17:17
Если я тебя правильно понял (ох, тяжкий это труд домысливать то, что неточно выразили), то дебе нужно задать двадцать переменных для объектов, которые называются a1,a2...a20. Причем первая переменная имеет значение 188, вторая - 198 (188+10), третья - 208 (198+10) и т.д с шагом 10.
Увы шага никакого нет. :(

Читай ответы внимательнее. Событие onLoad в твоем случае не наступает.
Я уже понял, просто хотел объяснить чего хочу получить.
Пришлось набивать ручками. :D
А хотелось побыстрее - скопировал, поменял только в одном месте имя мувика, и перебил значения переменных.

sergwizard
13.04.2004, 22:31
Внимательно. Она не грузиться потому, что событие onLoad для мувиклипа не созданного динамическим путем НЕ НАСТУПАЕТ НИКОГДА.
(Вывод, о том, что a1 - объект не динамический я делаю из того, что он ЛЕЖИТ НА СЛОЕ, то есть помещен на Stage до компиляции MovieClip'a)
О, как категорически: "НЕ НАСТУПАЕТ НИКОГДА "!
Ну, это если плохо попросить… А, вот если попросить хорошо, умеючи, - то наступает. Эту фичу надо бы знать. :)

sergwizard
13.04.2004, 22:58
2as_68
Посмотри этот пример. Надеюсь, он поможет. В том случае, если значения текстовых полей рэндомны, то их сначала надо загнать в массивы, а потом выдергивать их оттуда.

Dindin
13.04.2004, 23:48
sergwizard, уел :)