Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Доступ к объектам подгружаемого swf (http://www.flasher.ru/forum/showthread.php?t=134510)

Stanislavsky 02.01.2010 18:33

Доступ к объектам подгружаемого swf
 
добавил swf методом addChildAt в котором находится галлерея со слайдером.
Естественно ошибка 1009. Не знаю как правильно это все делать. Ткните носом, где читать? Какая функция? Спасибо!

Alex Lexcuk 02.01.2010 18:41

Может поможет
http://www.murmadillo.tut.su/as3/load-swf-metod.html

Stanislavsky 02.01.2010 18:53

спасибо. Я уже видел, но не смог разобраться)

Добавлено через 1 час 29 минут
Я на правильном пути?)

Код AS3:

private function menuButtonClick(e:Event):void // Функция кнопок меню для загрузки новых страниц
        {
                loader = new Loader(); // Новый загрузчик
                urlRequest = new URLRequest("firma.swf");
                ldrContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, fileLoaded); //загрузка закончена
                loader.load(urlRequest, ldrContext);   
        }
private function fileLoaded (e:Event):void // Метод появления новой страницы
        {
                startPageOut(); // Удаление Главной страницы
                ApplicationDomain.currentDomain.getDefinition("ldrContext"); // ЧТО ЗДЕСЬ ПИСАТЬ?
                nextPage = e.target.content;
                stage.addChildAt(nextPage, 1); // Добавить Следующую страницу
                currentPage = nextPage; // Присвоим Текущей странице - загруженную
        }

Добавлено через 3 часа 27 минут
Эээх! Не дождаться!

Wolsh 03.01.2010 14:10

Непонятно, зачем эти пассы с доменами, если Вы грузите страницы с того же домена, что и основную свф.

Stanislavsky 03.01.2010 14:15

Странно. У меня при нажатии на скролл-бар ошибка 1009. И ничего не работает.
Это - если я просто добавляю Child.
Wolsh, а как же правильно подгрузить swf, чтоб в ней работал код?

Alex Lexcuk 03.01.2010 14:47

Матюкаюсь..., ошибка 1009, а че это за ошибка??? Не я злой пофигист.

VVall 03.01.2010 14:54

Вероятно, в подгружаемом swf есть обращение к stage в конструкторе, а она там null при добавлении через addChild.

Stanislavsky 03.01.2010 16:06

Цитата:

Сообщение от VVall (Сообщение 876646)
Вероятно, в подгружаемом swf есть обращение к stage в конструкторе, а она там null при добавлении через addChild.

Именно так. А что нужно изменить? - Это код подгружаемого:
Код AS3:

package
{   
        import flash.display.*;   
        import flash.events.*;   
 
        public class Handle extends MovieClip   
        {           
                public var goToX : Number = x;       
                private var slider : MovieClip = MovieClip(parent).slider;       
                private var mousePos : Number = 0;                 
 
                public function Handle() : void       
                {           
                        buttonMode = true;           
                        addEventListener( MouseEvent.MOUSE_DOWN, moveHandle );           
                        stage.addEventListener( MouseEvent.MOUSE_UP, stopHandle );       
                }                 
 
                private function moveHandle( _e : MouseEvent ) : void       
                {           
                        mousePos = mouseX;           
                        stage.addEventListener( MouseEvent.MOUSE_MOVE, followHandle );       
                }                 
 
                private function stopHandle( _e : MouseEvent ) : void       
                {
                        stage.removeEventListener( MouseEvent.MOUSE_MOVE, followHandle );
                }               
 
                private function followHandle( _e : MouseEvent ) : void       
                {   
                        var newPos : Number = stage.mouseX - mousePos;
                        var orgX : Number = x; 
                        if ( newPos < slider.x )               
                        goToX = slider.x;           
                        else if ( newPos > (slider.x + slider.width) - width )               
                        goToX = (slider.x + slider.width) - width;           
                        else               
                        goToX = newPos;           
                        x = goToX;           
                        if( goToX != orgX )
                        dispatchEvent( new Event( "sliding", true ) );
                }                   
        }     
}

Добавлено через 42 минуты
Я заменил во всех случаях stage на parent! Ошибки нет. НО правильно ли это?

Alex Lexcuk 03.01.2010 20:13

>>Я заменил во всех случаях stage на parent! Ошибки нет. НО правильно ли это?
Не вот так правильно
Код AS3:

package
{   
        import flash.display.*;   
        import flash.events.*;   
 
        public class Handle extends MovieClip   
        {           
                public var goToX : Number = x;       
                private var slider : MovieClip = MovieClip(parent).slider;       
                private var mousePos : Number = 0;                 
 
                public function Handle() : void       
                {           
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
                        // ну после этого хоть все что угодно
 
                        buttonMode = true;           
                        addEventListener( MouseEvent.MOUSE_DOWN, moveHandle );           
                        stage.addEventListener( MouseEvent.MOUSE_UP, stopHandle );       
                }


Wolsh 03.01.2010 21:46

)) Собственно, любой класс документа (основной класс свф-файла) должен начинаться с установки стейджа. В шаблонах Flash Develop например это просто зафиксировано)) Есть стейдж - можно работать))


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

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