Просмотр полной версии : перекрывающие SWFLoader'ы и swf-ки в них
Доброй ночи
Есть 2 SWFLoader'а. Один выше другого. Тот что выше имеет контент который перекрывает мувик нижнего, на котором висит событие CLICK.
CLICK не срабатывает когда над ним есть какой-то другой SWFLoader, даже если пишу:
mouseEnabled=false
То же самое проверил с обычными мувиклипами - работает
mouseEnabled=false;
mouseChildren=false;
На жаль не помогает, сделал пример:
test2.zip (http://www.fayloobmennik.net/1178172)
mcAnimal - большая площадь, которая НЕ должна учитывать нажатие
clickMovie - клип для нажимания
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955"
minHeight="600">
<fx:Script>
<![CDATA[
protected function swfloader1_completeHandler(event : Event) : void {
//(loader1.content["mcAnimal"] as MovieClip).play();
loader1.mouseEnabled = false;
(loader1.content["clickMovie"] as MovieClip).mouseEnabled = true;
(loader1.content["clickMovie"] as MovieClip).buttonMode = true;
(loader1.content as MovieClip).mouseEnabled = false;
(loader1.content["mcAnimal"] as MovieClip).mouseEnabled = false;
(loader1.content["mcAnimal"] as MovieClip).mouseChildren= false;
(loader1.content["clickMovie"] as MovieClip).addEventListener(MouseEvent.CLICK, click1Handler);
}
protected function swfloader2_completeHandler(event : Event) : void {
// (loader2.content["mcAnimal"] as MovieClip).play();
loader2.mouseEnabled = false;
(loader2.content as MovieClip).mouseEnabled = false;
(loader2.content["mcAnimal"] as MovieClip).mouseEnabled = false;
(loader2.content["clickMovie"] as MovieClip).mouseEnabled = true;
(loader2.content["clickMovie"] as MovieClip).buttonMode = true;
(loader2.content["clickMovie"] as MovieClip).addEventListener(MouseEvent.CLICK, click2Handler);
}
protected function click1Handler(event : MouseEvent) : void {
// TODO Auto-generated method stub
trace("click 1");
}
protected function click2Handler(event : MouseEvent) : void {
// TODO Auto-generated method stub
trace("click 2");
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<mx:SWFLoader id="loader1" x="100" y="100" source="animal_0.swf"
complete="swfloader2_completeHandler(event)"/>
<mx:SWFLoader id="loader2" x="0" y="0" source="animal_0.swf"
complete="swfloader1_completeHandler(event)"/>
</s:Application>
На жаль не помогает
В вашем случае это надо было навесить на SWFLoader.
если сделать
mouseEnabled=false;
mouseChildren=false;
на весь лоадер, "content" становиться соответственно тоже недоступным...
Ну можете пойти сложным путем. Когда вы указали
loader1.mouseEnabled = false;
это отключило мышь лишь для SWFLoader, но не для контейнера содержащего загруженный ролик.
Вам к этому спагетти, что уже написано надо дописать
use namespace mx_internal;
loader1.contentHolder.mouseEnabled = false;
Афигеть! Магия! Работает! :)
alatar, скажите, пожалуйста, что делает первая строка вашего блока кода?
use namespace mx_internal;
loader1.contentHolder.mouseEnabled = false;
Дает указание использовать пространство имен mx_internal в котором находится contentHolder.
Почитайте о пространствах имен (namespace) в AS3.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.