PDA

Просмотр полной версии : почему так ?


-=VoskreS=-
06.09.2005, 13:26
Есть простой код :


_root.createEmptyMovieClip('m',1);

//m._width = 100
//m._height = 100

_root.m.attachMovie('man','man',1)
trace(m._width+' '+ m._height);


Так все работает : из библиотеки грузится и отображается мув, но если раскомментарить то что закоменчено, то ничего не отображается и последний трейс выдает 0 0. В чем дело ? Хотя мув грузится определенно, т.к. можно вызывать методы, описанные в нем.

Double
06.09.2005, 13:29
попробуй изменять размеры после того, как приаттачишь к пустому мувику что-то.

KUZEN
06.09.2005, 13:30
Потому что ты даёшь размеры пустому мувику, попробуй вот так
_root.createEmptyMovieClip('m', 1);
_root.m.attachMovie('man', 'man', 1);
m._width = 100;
m._height = 100;
trace(m._width+' '+m._height);

-=VoskreS=-
06.09.2005, 13:35
блин, так я про то и говорю, почему когда присваиваешь до , то вообще не отображается ?

Double
06.09.2005, 13:37
ну а каков результат умножения 100 на ничего? по-моему 0 - самый логичный ответ.

KUZEN
06.09.2005, 13:39
ну а каков результат умножения 100 на ничего? по-моему 0 - самый логичный ответ.
Т.е. по твоему если бы мувик был размером 2х2 то при задании ему размеров 100х100 он бы по твоей логике стал бы
2х100=200 .... так что логика твоя не катит ...

-=VoskreS=-
06.09.2005, 13:41
да, именно так, ноль как был так и остался. но в первом случае аттач сработал а во втором - как бы и нет... ничего не отобразилось . вот и спрашивается - почему ?

-=VoskreS=-
06.09.2005, 13:46
Вообще то такая лажа встретилась мне при использовании MovieClipLoader.LoadMovie() . Мне надо было по факту загрузки мува отресайзить его изменив ему _width и _height. Пробовал вешать на onLoadComplete и на onLoadInit ресайзинг - результат тот же, т.е. как при ресайзинге перед аттачем.

KUZEN
06.09.2005, 13:49
Воббще мне раньше никогда в голову не приходило задавать размеры мувика заранее ведь всё равно если ты подгружаешь мув большего размера то подружаемый растянется ...
хотя с другой стороны если допустим m._alpha = 10; то всё пучком где ни ставь ...
в принципе, твой действия не логичны, но с другой стороны не понятно почему не подгружается ...

-=VoskreS=-
06.09.2005, 13:49
Хотя что интересно, если распечатать в onLoadComplete() размеры подгружаемого мува, получим 0 0 (очевидно еще как следует не подгрузился.) Но ежели распечатать размеры в onLoadInit() , то получаются ненулевые размеры, которые однако не соответствуют истинным размерам подгружаемого мува.

-=VoskreS=-
06.09.2005, 13:52
в принципе, твой действия не логичны

Очень даже логичны. Мне надо задать размеры мува сразу после его загрузки. Как это делать, если в предназначенных для этого функциях - обработчиках событий onLoad...() это сделать не получается ?

KUZEN
06.09.2005, 13:56
какой необходимостью вызван факт задания размеров до подгрузки мувика ?

Leezard
06.09.2005, 14:00
1вариант onLoadInit
2.вариант на созданном объекте onEnterFrame функция:
if(this._width>0){
...
delete this.onEnterFrame();
}

-=VoskreS=-
06.09.2005, 14:03
В том и суть. Я пытался изменить его размеры П О С Л Е его подгрузки, в функции onLoadInit() которая по докам срабатывает когда выполнился код в первом кадре подгруженного мува. Но это не дает результата . Ресайзинг происходит, но совершенно не так. Ежели задавать размеры в onLoadComplete() то подгружаемый мувик вовсе не отображается. Точно также как при ситуации с аттачем.

Leezard
06.09.2005, 14:06
а второй вариант?

-=VoskreS=-
06.09.2005, 14:06
1вариант onLoadInit
2.вариант на созданном объекте onEnterFrame функция:
if(this._width>0){
...
delete this.onEnterFrame();
}

Дело в том, что как я уже сказал, в onLoadInit размеры стают уже ненулевыми, но они почему-то Н Е Р А В Н Ы истинным размерам подгружаемого мувиклипа.

-=VoskreS=-
06.09.2005, 14:07
да, над вторым вариантом наверно стоит подумать.

iNils
06.09.2005, 14:11
Дело в том, что как я уже сказал, в onLoadInit размеры стают уже ненулевыми, но они почему-то Н Е Р А В Н Ы истинным размерам подгружаемого мувиклипа.
Флеш определяет не те размеры которые указаны в Document Properties, а те суммарный размер объектов.
Скажем у тебя есть флешка размером 100 на 100. В ней лежит овал размером 50 на 120. Флеш при определении размера даст тебе 50 на 120.

Leezard
06.09.2005, 14:16
я использовал оба варианта,
второй раньше, сейчас первый.
оба работают. второй проще в понимании, но засирает проц если объектов много.

Double
06.09.2005, 18:13
это была не логика. просто аналогия. как можно задать размер пустоте?
а почему тебе не сделать пустой клип невидимым, подгрузить в него мувик, задать размеры и затем показать. не понимаю я необходимости задавать размеры до подгрузки содержимого. наверное я для этого слишком тупой.

-=VoskreS=-
06.09.2005, 18:42
Вот конкретно файлы с которыми я работал .

Файлик loading.swf подгружает mc.swf.

Трейс выдает следующее :

After loader : 0 0
####onEnterFrame : 0 0
start 0 0
complete 0 0
####onEnterFrame : 51.85 116.75
init 51.85 116.75
_level0.cont
####onEnterFrame : 484.5 346.65
####onEnterFrame : 484.5 346.65
####onEnterFrame : 484.5 346.65

Таким образом как видно размеры подгружаемого мува при загрузке принимают 3 (!!!) значения (0, 0), (51.85, 116.75) и (484.5, 346.65)

Как это можно объяснить ? И как его теперь отресайзить, т.е. в какой момент ?

Double
06.09.2005, 18:52
ну а тебе никогда не приходило в голову, что 51 с копейками на 116 - это размер 1 кодра твоего подгружаемого мувика? дальше рассказывать? iNils говорил.

-=VoskreS=-
06.09.2005, 19:04
ёлы палы, и правда. пасиба.