Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   нажатие кнопок под загруженной флэшкой (http://www.flasher.ru/forum/showthread.php?t=158017)

djyamato 14.06.2011 04:11

нажатие кнопок под загруженной флэшкой
 
подскажите, как мне сделать неактивным для нажатия Application чтобы я мог нажимать кнопки ПОД загруженной флэшкой(сделанной на флексе) во флэшке сделанной на флэше

во флэшке (flash IDE) есть кнопки
выше их подгружается флэшка (флекс) и закрывает собой эти кнопки (с прозрачностью фона у подгружаемой флэшки я разобрался)

сейчас у меня такой скин у приложения

appSkin.mxml
Код AS3:

<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
                xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabled="0.5" alpha.disabledWithControlBar="0.5">
 
        <fx:Metadata>
                <![CDATA[
                /**
                * A strongly typed property that references the component to which this skin is applied.
                */

                [HostComponent("spark.components.Application")]
                ]]>
        </fx:Metadata>
 
        <fx:Script fb:purpose="styling">
                <![CDATA[
                        /**
                        *  @private
                        */

                        override protected function updateDisplayList(unscaledWidth:Number,
                                                                                                                  unscaledHeight:Number) : void
                        {
                                //bgRectFill.color = getStyle('backgroundColor');
                                //bgRectFill.alpha = getStyle('backgroundAlpha');
                                super.updateDisplayList(1, 1);
                        }
                ]]>
        </fx:Script>
 
        <s:states>
                <s:State name="normal" />
                <s:State name="disabled" />
                <s:State name="normalWithControlBar" />
                <s:State name="disabledWithControlBar" />
        </s:states>
 
        <!-- fill -->
        <!---
        A rectangle with a solid color fill that forms the background of the application.
        The color of the fill is set to the Application's backgroundColor property.
        -->
        <!--
        <s:Rect id="backgroundRect" left="0" right="0" top="0" bottom="0">
                <s:fill>
                        <s:SolidColor id="bgRectFill" color="#FF0000" alpha="0"/>
                </s:fill>
        </s:Rect>
        -->
 
        <s:Group left="0" right="0" top="0" bottom="0">
 
                <s:layout>
                        <s:VerticalLayout gap="0" horizontalAlign="justify" />
                </s:layout>
 
                <s:Group id="topGroup" minWidth="0" minHeight="0"
                                includeIn="normalWithControlBar, disabledWithControlBar" >
 
                        <s:Rect left="0" right="0" top="0" bottom="1" >
                                <s:stroke>
                                        <s:LinearGradientStroke rotation="90" weight="1">
                                                <s:GradientEntry color="0xFFFFFF" />
                                                <s:GradientEntry color="0xD8D8D8" />
                                        </s:LinearGradientStroke>
                                </s:stroke>
                        </s:Rect>
 
                        <s:Rect left="1" right="1" top="1" bottom="2" >
                                <s:fill>
                                        <s:LinearGradient rotation="90">
                                                <s:GradientEntry color="0xEDEDED" />
                                                <s:GradientEntry color="0xCDCDCD" />
                                        </s:LinearGradient>
                                </s:fill>
                        </s:Rect>
 
                        <s:Rect left="0" right="0" bottom="0" height="1" alpha="0.55">
                                <s:fill>
                                        <s:SolidColor color="0x000000" />
                                </s:fill>
                        </s:Rect>
 
                        <s:Group id="controlBarGroup" left="0" right="0" top="1" bottom="1" minWidth="0" minHeight="0">
                                <s:layout>
                                        <s:HorizontalLayout paddingLeft="10" paddingRight="10" paddingTop="7" paddingBottom="7" gap="10" />
                                </s:layout>
                        </s:Group>
                </s:Group>
 
                <s:Group id="contentGroup" width="1" height="1" minWidth="0" minHeight="0" />
 
        </s:Group>
 
</s:Skin>


alatar 14.06.2011 11:31

У вас же бэкграунд на всю растянут. Он будет закрывать по-любому. Попробуйте убрать бэкграунд. Для групп (и самого скина) установить mouseEnabledWhereTransparent=false.

djyamato 14.06.2011 16:47

Не помогло
Возможно, янеправильно Вас понял
Вот так изменил скин
Код AS3:

<?xml version="1.0" encoding="utf-8"?>
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
                xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
                alpha.disabled="0.5"
                alpha.disabledWithControlBar="0.5"
                <b>mouseEnabledWhereTransparent="false"b>>
 
        <fx:Metadata>
                <![CDATA[
                [HostComponent("spark.components.Application")]
                ]]>
        </fx:Metadata>
 
        <fx:Script fb:purpose="styling">
                <![CDATA[
                        override protected function updateDisplayList(unscaledWidth:Number,
                                                                                                                  unscaledHeight:Number) : void
                        {
                                //bgRectFill.color = getStyle('backgroundColor');
                                //bgRectFill.alpha = getStyle('backgroundAlpha');
                                super.updateDisplayList(100, 100);
                        }
                ]]>
        </fx:Script>
 
        <s:states>
                <s:State name="normal" />
                <s:State name="disabled" />
                <s:State name="normalWithControlBar" />
                <s:State name="disabledWithControlBar" />
        </s:states>
 
        <s:Rect id="backgroundRect" left="0" right="0" top="0" bottom="0" width="100" height="100">
                <s:fill>
                        <s:SolidColor id="bgRectFill" color="#FF0000" alpha="0"/>
                </s:fill>
        </s:Rect>
 
 
        <s:Group left="0" right="0" top="0" bottom="0" width="100" height="100">
 
                <s:layout>
                        <s:VerticalLayout gap="0" horizontalAlign="justify" />
                </s:layout>
 
                <s:Group id="topGroup" minWidth="0" minHeight="0"
                                includeIn="normalWithControlBar, disabledWithControlBar"
                                width="100" height="100">
 
                        <s:Rect left="0" right="0" top="0" bottom="1" width="100" height="100">
                                <s:stroke>
                                        <s:LinearGradientStroke rotation="90" weight="1">
                                                <s:GradientEntry color="0xFFFFFF" />
                                                <s:GradientEntry color="0xD8D8D8" />
                                        </s:LinearGradientStroke>
                                </s:stroke>
                        </s:Rect>
 
                        <s:Rect left="1" right="1" top="1" bottom="2" width="100" height="100">
                                <s:fill>
                                        <s:LinearGradient rotation="90">
                                                <s:GradientEntry color="0xEDEDED" />
                                                <s:GradientEntry color="0xCDCDCD" />
                                        </s:LinearGradient>
                                </s:fill>
                        </s:Rect>
 
                        <s:Rect left="0" right="0" bottom="0" alpha="0.55" width="100" height="100">
                                <s:fill>
                                        <s:SolidColor color="0x000000" />
                                </s:fill>
                        </s:Rect>
 
                        <s:Group id="controlBarGroup" left="0" right="0" top="1" bottom="1" minWidth="0" minHeight="0" width="100" height="100">
                                <s:layout>
                                        <s:HorizontalLayout paddingLeft="10" paddingRight="10" paddingTop="7" paddingBottom="7" gap="10" />
                                </s:layout>
                        </s:Group>
                </s:Group>
 
                <s:Group id="contentGroup" width="100" height="100" minWidth="0" minHeight="0" />
 
        </s:Group>
 
</s:Skin>

вот компоненты
[as3]
<s:Group mouseEnabledWhereTransparent="false">
<s:SkinnableContainer id="blackArea"
width="1"
height="1"
backgroundColor="0x000000"
backgroundAlpha="0.4"
x="0"
y="0"
click="blackArea_clickHandler(event)"
/>

<mx:Image id="templateImage" source="plugin/gallery/assets/koncert_Interface_final_2.jpg"
visible="false"/>

<s:List id="myTweenList"
contentBackgroundAlpha="0.0"
itemRenderer="itemRenderers.CustomListItemRenderer"
x="24"
width="138"
creationComplete="list1_creationCompleteHandler(event)"
change="myTweenList_changeHandler(event)">
</s:List>
<mx:Image x="104" source="plugin/gallery/assets/listArrow.png" id="listUpArrow" rotation="180" click="listUpArrow_clickHandler(event)"/>
<mx:Image x="73" source="plugin/gallery/assets/listArrow.png" id="listDownArrow" click="listDownArrow_clickHandler(event)"/>
<myComp:CustomImage x="201" y="28" width="660" height="556" id="bigFoto" visible="false"/>
</s:Group>
[as3]

alatar 14.06.2011 17:04

Еще раз любой бэкграунд, даже прозрачный, заставляет компонент перехватывать мышь (если, конечно она не отключена).
У вас же даже в скине Application:
Цитата:

<s:Rect id="backgroundRect" left="0" right="0" top="0" bottom="0" width="100" height="100">
<s:fill>
<s:SolidColor id="bgRectFill" color="#FF0000" alpha="0"/>
</s:fill>
</s:Rect>

djyamato 15.06.2011 06:49

а как тогда убрать бэкграунд ?
ну делал я его размеры 1 на 1 пиксель, все равно кладется он сверху


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

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