Трассировка сценария действия в выводе иерархии Flex Builder - PullRequest
0 голосов
/ 22 мая 2011

Я использую Flex Builder 4.5, и моя проблема в том, что этот код не работает, когда я использую трассировку (event.target), я получаю следующее в результате в консоли,

deleteme.ApplicationSkin2._ApplicationSkin_Group1.contentGroup.VGroup5.button1

И если я заменю эту длинную строку в коде оператора 'if', то сработает (deleteme - название проекта). Разве вы не думаете, что следует сказать только button1 вместо всей этой длинной строки со всей иерархией, если это так, то как мы можем сократить это?

<?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"
           initialize="handleClick(event)">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<fx:Script>
    <![CDATA[
        private function init():void{
            button2.addEventListener(MouseEvent.CLICK, handleClick);
        }
        private function handleClick(event:Event):void{
            trace(event.target);
            if(event.target == "button1"){
                button1.label = "Button 1 clicked";
            }else if(event.target == "button2"){
                button2.label = "Button 2 clicked";
            }
        }

    ]]>
</fx:Script>
<s:VGroup width="100%">
    <s:Button id="button1" label="Button 1" click="handleClick(event)"/>
    <s:Button id="button2" label="Button 2" />
</s:VGroup>
</s:Application>

спасибо заранее,

(я пытался с SDK 4.1 все тот же ответ)

1 Ответ

2 голосов
/ 22 мая 2011

Вместо этого используйте следующий код:

<?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"
           initialize="handleClick(event)">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<fx:Script>
    <![CDATA[
        private function init():void{
            button2.addEventListener(MouseEvent.CLICK, handleClick);
        }
        private function handleClick(event:Event):void{
            trace(event.target);
            if(event.currentTarget == button1){
                button1.label = "Button 1 clicked";
            }else if(event.currentTarget == button2){
                button2.label = "Button 2 clicked";
            }
        }

    ]]>
</fx:Script>
<s:VGroup width="100%">
    <s:Button id="button1" label="Button 1" click="handleClick(event)"/>
    <s:Button id="button2" label="Button 2" />
</s:VGroup>
</s:Application>

Нет смысла сравнивать визуальные объекты со строками.Сравните объекты с самими объектами.

...