Вход

Просмотр полной версии : Как получить _totalframes у загруженого swf?


Olesolo
29.07.2008, 13:01
Доброе утро всем.
Столкнулся с проблемой.
myClip._totalframes - вне зависимости от загруженного клипа, выводит одинаковое значение - 65535. Пробую myClip._framesloaded, выводит - 16000.

Вот мой код.

this.createEmptyMovieClip("myContainer",this.getNextHighestDepth());
var myLoader:MovieClipLoader = new MovieClipLoader();
myLoader.addListener(this);
myLoader.loadClip("test2.swf",myContainer);
function onLoadInit(mc:MovieClip) {
myContainer.stop();
trace(myContainer._totalframes);
trace(myContainer._framesloaded);
}


И подскажите, можно ли как то получить framerate у загруженого swf?(AS2)

Olesolo
29.07.2008, 16:13
возможно это поможет.
клипы которые подгружаются содержат звуковые дорожки в таймлайне и на некотрых фреймах обращения к внешнему яваскрипту.

lexa2000lexa
29.07.2008, 16:29
поместите звук в библиотеку , это должно вам помочь.

Olesolo
29.07.2008, 17:06
нет. swf со звуком, генерируется автоматически.
мне нужно знать количество фреймов в загруженном клипе, чтобы вычислить продолжительность звука. или может быть кто нибудь посоветует другой путь?

crazyone
29.07.2008, 17:28
Видимо ваш свф со звуком криво генерируется.

PS Тут нужен смайлик в бешенстве, конечно же. Даже он взбесился. Что значит "вне зависимости от подгружаемого клипа"? А от чего это зависит, по-вашему? От фазы луны? Или вы думаете, что вот всю жизнь _totalframes нормально работал, а тут вдруг перестал? И конечно же, то, что ваши swf генерируются автоматически, никак не влияет на это?
Извините, эмоции.

Olesolo
29.07.2008, 19:27
эмоции оставляйте дома.

"вне зависимости от подгружаемого клипа" - означает, что какой бы я клип не подгружал, сгенерированный или созданный вручную, результат один и тот же.

lexa2000lexa
29.07.2008, 19:37
я конечно не знаю, но у меня все работает нормально , с клипом созданным вручную.
во вложении пример.

Olesolo
29.07.2008, 19:43
похоже на определение _totalframes влиял AS в подгружаемом swf, который находился в первом фрейме.
можно ли как то на время игнорировать/выключать его?
вот сам скрипт:
getURL("javascript:rshlinit()");

crazyone
29.07.2008, 22:44
эмоции оставляйте дома.


Эмоции я буду оставлять там, где они возникли. Тем более, что это был тонкий намек на то, что нужно бы описать ваши подгружаемые клипы.


"вне зависимости от подгружаемого клипа" - означает, что какой бы я клип не подгружал, сгенерированный или созданный вручную, результат один и тот же.

Если ваша проблема вызвана не подгружаемыми клипами, я готов сьесть свои носки.

И да, обработчик onLoadComplete вызывается до выполнения любого кода в подгруженном свф, но сразу после загрузки. Он вам и нужен, если это проделки вызова AS в первых кадрах.

Molecula
29.07.2008, 22:55
this.createEmptyMovieClip("myContainer",this.getNextHighestDepth());
var myLoader:MovieClipLoader = new MovieClipLoader();
myLoader.addListener(this);
myLoader.loadClip("Untitled-2.swf",myContainer);
function onLoadInit(mc:MovieClip) {
mc.stop();
trace(mc._totalframes); // traces 70
trace(mc.mymc._totalframes); // traces 30
}

В Untitled-2.swf в руте 70 фреймов, а в клипе mymc 30.

Olesolo
30.07.2008, 01:31
вообщем, вы правы. проблема действительно в сгенерированном swf
сгенерированный файл со звуком во вложении.
если кто сможет помочь, буду очень признателен.
никак не пойму, что глючит. :umnik2:

Жень Шень
30.07.2008, 11:23
Код в первом кадре - getURL("javascript:rshlinit()"); перенести во второй, так как после onLoadInit вызывается браузер с вытекающими последствиями. Далее. Раз вы стопите его после загрузки: myContainer.stop();, то просто поставте стоп в первом кадре. И получите свои 394 кадра!

Olesolo
30.07.2008, 14:10
дело в том, что генерацией файла я не могу управлять. в этом и загвоздка. :\

crazyone
30.07.2008, 18:38
Код в первом кадре - getURL("javascript:rshlinit()"); перенести во второй, так как после onLoadInit вызывается браузер с вытекающими последствиями. Далее. Раз вы стопите его после загрузки: myContainer.stop();, то просто поставте стоп в первом кадре. И получите свои 394 кадра!

Нет, там проблемма не в самом коде. Там генерация свф кривая.
Если эту же свф-ку декомпилировать и собрать новую, не внося в исходник изменений - все работает хорошо, определяет 395 кадров.

Выход - мучить того, кто генерирует свф-ку, он плохо справился со своей задачей.

Olesolo
30.07.2008, 20:57
Если эту же свф-ку декомпилировать и собрать новую, не внося в исходник изменений - все работает хорошо, определяет 395 кадров.


только этим и занимался.
есть пару swf которые после перекомпиляции работают, а основное число не работает.

действительно, если в swf 1й фрейм сделать пустым - всё ок.
...
:umnik2:
фиг его знает че делать