Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   totalFrames: исправьте код, пожалуйста (http://www.flasher.ru/forum/showthread.php?t=133237)

harrisunreal 30.11.2009 16:40

totalFrames: исправьте код, пожалуйста
 
Необходимо получить totalFrames в подгруженом мувике.
Исправьте код пожалуйста, на Вашем форуме много подобных вопросов, но доконца не доведены.

Код AS3:

package 
{
        import flash.display.Loader;
        import flash.display.MovieClip;
        import flash.events.*;
        import flash.net.URLRequest;
        import flash.events.Event;
        public class Loaders extends MovieClip
        {
                var request:URLRequest = new URLRequest("dead.swf");
 
                public function Loaders()
                {
                        var loader = new Loader();
                        var targetClip = loader.content as MovieClip;                       
 
                        loader.load(request);
                        addChild(loader);
 
                        loader.addEventListener(Event.COMPLETE, compl);
 
                        trace("totalFrames in Parent:\t", this.totalFrames);
                }
                public function compl(Event):void
                {
                        trace("totalFrames in Child:\t", targetClip.totalFrames);
                }
        }
}

Выдает "Acces of undefined property targetClip" :(

Добавлено через 21 минуту
Нашел, что если подружаемая флешка старой версии, то может не пройти.

http://help.adobe.com/ru_RU/ActionSc...0204-7d9e.html

Можно ли тогда использовать методы из AS1/AS2?

VVall 30.11.2009 17:11

А как targetClip должен быть виден в compl, если он объявлен в конструкторе?

gloomyBrain 30.11.2009 17:14

Код AS3:

package 
{
        import flash.display.Loader;
        import flash.display.MovieClip;
        import flash.events.*;
        import flash.net.URLRequest;
        import flash.events.Event;
        public class Loaders extends MovieClip
        {
                var request:URLRequest = new URLRequest("dead.swf");
 
                public function Loaders()
                {
                        var loader = new Loader();
                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, compl);
                        loader.load(request);
                }
                public function compl(evt:Event):void
                {
                        var targetClip:MovieClip = evt.target.content as MovieClip;
                        trace("totalFrames in Child:\t", targetClip.totalFrames);
                        addChild(loader);
                }
        }
}


harrisunreal 30.11.2009 17:22

Не срабатывает событие COMPLETE, при других событиях выдает ошибку доступа к НУЛЛ-методу.

Сайлас 30.11.2009 18:19

loader.contentLoaderInfo если слушать?

harrisunreal 30.11.2009 18:25

Так работает, на переменную targetClip не ругается.
Но выдает ошибку в trace:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Loaders/compl()

Добавлено через 1 минуту
Может это связано с тем, что для dead.swf нет методов AS3?

Добавлено через 18 минут
targetClip = null оказывается......

Добавлено через 46 минут
Результат
Код AS3:

trace(evt.target.content)

[object AVM1Movie]

Добавлено через 48 минут
Может действительно в этом дело и как пишется в:
http://help.adobe.com/ru_RU/ActionSc...0204-7d9e.html

"Когда успешно загружен SWF-файл версии AVM1, загруженным объектом (свойством Loader.content) будет объект AVM1Movie. Экземпляр AVM1Movie отличается от экземпляра MovieClip. Это экранный объект, но в отличие от фрагмента ролика, он не включает методов и свойств, связанных с временной шкалой. Родительский SWF-файл версии AVM2 не будет иметь доступа к свойствам, методам или объектам загруженного объекта AVM1Movie."

????????

wvxvw 30.11.2009 20:13

По ни для кого не понятной причине у AVM1Movie нету методов stop(), play(), gotoAndStop(), gotoAndPlay() и остальных аттрибутов MovieClip существовавших в AS2. Чтобы эти методы вызвать прийдется общаться либо через ExternalInterface либо LocalConnection - по ситуации.

etc 01.12.2009 07:28

Где-то видел враппер, который превращает AVM1Movie в MovieClip.

Смольный (Smolniy) 21.12.2009 20:06

http://code.google.com/p/as3-classes...eLoader.as?r=6

http://alaguvel.wordpress.com/2008/0...orcibleloader/

wvxvw 21.12.2009 21:02

Код по ссылке, конечно, хорошая вещь, но, перед использованием хорошо бы несколько вещей поправить все-таки. Например, функция, которая имеет возвращаемый тип uint не может вернуть NaN - ну и далее проверять ее типа isNaN() уже не имеет смысла.


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

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