Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Обращение к клипам внутри Embed SWF (http://www.flasher.ru/forum/showthread.php?t=125676)

Vasik1 29.05.2009 17:02

Обращение к клипам внутри Embed SWF
 
Код AS3:

<mx:Image y="0" width="407" id="menu_top" height="81" source="@Embed('menu_top.swf')" right="0"/>

Просто хочется сделать, что-то типа menu_top.m1.txt.gotoAndStop(1);
Как это сделать?
Аналогично хочется в TileList к каждому элементу применить ColorTransform. Так как к ним доступ получить?

fljot 29.05.2009 17:32

Код AS3:

((menu_top.content as Sprite).getChildByName("m1") as Sprite).getCh....


Vasik1 29.05.2009 18:39

Не помогает :(((

Чтоб кода было по минимуму, сделал так:
Код AS3:

<mx:Script>
                <![CDATA[
                        private function init():void{
                                import flash.display.Sprite;
                                import flash.display.DisplayObject;
 
                                var a:DisplayObject;
                                a=(menu_top.content as Sprite).getChildByName("m1");
                                a.alpha=10;
            }
                ]]>
        </mx:Script>

Ответ плеера
Код:

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
        at main/init()[H:\Работа\.....\flex\src\main.mxml:19]
        at main/___main_Application1_creationComplete()[H:\Работа\Mail.ru\Салон Красоты\flex\src\main.mxml:2]
        at flash.events::EventDispatcher/dispatchEventFunction()
        at flash.events::EventDispatcher/dispatchEvent()
        at mx.core::UIComponent/dispatchEvent()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:9298]
        at mx.core::UIComponent/set initialized()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:1169]
        at mx.managers::LayoutManager/doPhasedInstantiation()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:718]
        at Function/http://adobe.com/AS3/2006/builtin::apply()
        at mx.core::UIComponent/callLaterDispatcher2()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8628]
        at mx.core::UIComponent/callLaterDispatcher()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8568]


fljot 30.05.2009 00:56

ну потрейсите, что menu_top.content выдаёт

Vasik1 01.06.2009 14:58

:( ни чего не выдаёт!
Только ошибки сплошные.
Прошу прощения за тупизм, но всё же, как обратиться к нужному мувику? Другие способы есть?

wvxvw 01.06.2009 15:34

Так может сначала нужно подписаться на событие о загрузке?

nauroman 03.06.2009 06:06

Оу. У меня в похожем месте затык:

Если делаю так:

Код AS3:

<mx:SWFLoader id="swfLoader" source="assets/tag.swf"/>

,то всё работает,

А если так:

Код AS3:

        <mx:SWFLoader id="swfLoader" source="@Embed('assets/tag.swf')"/>

, то потом вот это:

Код AS3:

var mc:MovieClip = swfLoader.content as MovieClip;
 
if (!mc) return;
 
mc.unloadImage();

Выдаёт ошибку в последней строке, типа:

Код AS3:

ReferenceError: Error #1069: Property unloadImage not found on components.Tag__embed_mxml_assets_tag_swf_408940351 and there is no default value.

Где я виноват ? Ну, т.е. чем заембеденный swf отличается от загруженного ? И, что сделать, тобы заембеденный заработал так же, как загруженный ?

P.S. Извиняйте за тупой вопрос )

cptFlint 29.01.2010 23:54

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

wvxvw 30.01.2010 00:03

А почему вы думаете, что у только что сгенеренного (читай чистого, без всяких довесков movieClip'a) должен быть метод или свойство unloadImage?

barkaloid 02.02.2010 19:34

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

miramax 02.02.2010 20:09

Вы компилите во флеше ?
Анимашку с кадрами и кодом ?

Экспортируйте мувики во Flash IDE в swc и подключайте эти swc библиотеки во Flex.
Последнее время не люблю embed source, всё собираю в свц во флеш иде. Звуки, картинки, видео. Быстрее комилируется, флекс не багает.

HN4E7O 04.02.2010 16:47

Код:


adminPopUp.botClose.load("swfFace/botClose.swf");
adminPopUp.botClose.addEventListener(Event.INIT,closeAdmin);
private function closeAdmin(evento:Event):void{
  var botClose:MovieClip = evento.currentTarget.content.close as MovieClip;
    botClose.buttonMode = true;

  botClose.addEventListener(MouseEvent.MOUSE_OVER,function(evento:MouseEvent):void{
                evento.currentTarget.gotoAndStop(2);
  });
       
         
    botClose.addEventListener(MouseEvent.MOUSE_OUT,function(evento:MouseEvent):void{
        evento.currentTarget.gotoAndStop(1);
    });
       
  botClose.addEventListener(MouseEvent.CLICK,function(evento:MouseEvent):void{
        evento.currentTarget.gotoAndStop(1);
        changeURL(strFragment);
    });
 }

Это работает с одним MC и он должен быть на сцене и имя его в данном случае "close".


У меня проблема более глобальная...

Как загрузить .swf в FLEX и потом использывать мувики из библиотеки этого клипа как элементы флекса??? Вот в чём вопрос !!!!

Добавлено через 2 часа 39 минут
Сорри что чуть чуть не по теме... Но думаю что полезная инфо для тех кто хочет децел облегчить свой swf, и не использывать Embed SWF.

skin.swf - это обычная флэшка, с кучей МС на сцене, естественно каждая со свои именем(bot1 и bot2).

Код:

skinLoader.load("swf/skin.swf");
skinLoader.addEventListener(Event.INIT,swfCargado);
private function swfCargado(e:Event):void{
   
  var skin:MovieClip = e.currentTarget.content as MovieClip;
   
  var bot2:MovieClip = skin.bot2 as MovieClip;
  bot2.x = 25;
  bot2.y = 75;
       
  // Если же нада засунуть во внутрь какого нить компонента то....
  var bot1:MovieClip = skin.bot1 as MovieClip;
  var ui:UIComponent = new UIComponent();   
  ui.addChild(bot1);
  footer.addChild(ui);

  // А дальше что угодно.....
 
  bot1.stop();
  bot1.addEventListener(MouseEvent.MOUSE_OVER,function(evento:MouseEvent):void{
      evento.currentTarget.gotoAndStop(2);
  });
   
         
    bot1.addEventListener(MouseEvent.MOUSE_OUT,function(evento:MouseEvent):void{
  evento.currentTarget.gotoAndStop(1);
    });
   
  bot1.addEventListener(MouseEvent.CLICK,function(evento:MouseEvent):void{
    evento.currentTarget.gotoAndStop(1);
    });
   
 
}


wvxvw 04.02.2010 21:13

Код AS3:

botClose.addEventListener(MouseEvent.MOUSE_OVER,function(evento:MouseEvent):void{
                evento.currentTarget.gotoAndStop(2);
  });

Вот так больше никогда не делайте, за такоe могут и руки по пояс оторвать потом.

HN4E7O 04.02.2010 21:16

а почему ? обьясните если не сложно ?

etc 05.02.2010 09:03

Цитата:

Сообщение от HN4E7O (Сообщение 884146)
а почему ? обьясните если не сложно ?

inline-обработчики невозможно отписать и они ещё и память засоряют.

HN4E7O 05.02.2010 11:48

Цитата:

Сообщение от etc (Сообщение 884239)
inline-обработчики невозможно отписать и они ещё и память засоряют.

спасибо... больше не буду


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

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