0

这里的情况很奇怪:声明为公共的 AS 对象在一种方法中是“可写的”,而在另一种方法中是不可写的。

以下是一些代码部分:

<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"
                           xmlns:ns1="*"
                           xmlns:local="*"
                           minWidth="955" minHeight="600"
                           width="955" height="600"
                           creationComplete="init()"
                           currentState="Login" minHeight.pocetakPartije="1200" minWidth.pocetakPartije="1000">

...

<fx:Script>
                <![CDATA[
                        import flash.display.Sprite;
                        import flash.events.Event;
                        import flash.events.TimerEvent;
                        import flash.net.URLRequest;
                        import flash.net.URLVariables;
                        import flash.net.navigateToURL;
                        import flash.utils.Timer;


                        public var obavestenja:Object;

                        private function init() :void
                        {
// ...
                                obavestenja = {korak10n: false, korak6o: false, korak8o: false, korak10o: false};
                        }

                       // ...
                         // this method changes it without issues ...
private function pingOKHandler(evt:ResultEvent):void
                        {
                                // ...
                                                switch (stanjePartije.korak) {
                                                        case 0:
                                                                //deaktiviranje zetona
                                                                Alert.show('Deaktiviram zetone...');
                                                                deaktiviranjeZetona();
                                                                //na serveru smo promenili korak na 1
                                                                break;
                                                        //... 
                                                        case 10:
                                                                //info o osnovnoj kocki odbrane
                                                                rezultatNapad.visible = true;
                                                                if (!obavestenja.korak10n) {
                                                                        Alert.show('Branitelj je dobio...' + stanjePartije.osnovnaKockaOdbrana, "Alert",
                                                                                Alert.OK, this,
                                                                                obavestenOIshoduNListener, null, Alert.OK);
                                                                        //rezultatOdbrana.visible = true;
                                                                        //rezultatOdbrana.text ='Osnovna kocka odbrana:' +  stanjePartije.osnovnaKockaOdbrana;
                                                                        obavestenja.korak10n = true;
                                                                }
                                                                ExternalInterface.call('console.log', 'korak10n: ' + obavestenja.korak10n);
                                                                //promeniKorak(11);
                                                                break;

                                                }

                       // ...
                                ExternalInterface.call('console.log','nema vise pinga!');
                        }

// this method cannot change "obavestenja" object

                        protected function promenaNapadacaNe_clickHandler(event:MouseEvent):void
                        {
                                //TODO Auto-generated method stub
                                ExternalInterface.call('console.log', 'promenaNapadacaNe: ' + stanjePartije.igracNaPotezu );
                                //stanjePartije.redniBroj++;
                                mitskiheroji.promenaNapadacaNe();
                                //promeniKorak(5);
                                promenaNapadacaPanel.visible = false;
                                obavestenja = {korak10n: false, korak6o: false, korak8o: false, korak10o: false};
                        }



                       <fx:Script>


                       ...

                       <s:Button id="promenaNapadacaNe" x="253" y="35" label="Ne"
                                  click="promenaNapadacaNe_clickHandler(event)"/>

是否有一些特殊原因导致该对象不能从侦听器访问(即可写)而它可以从其他方法访问(可写)?

谢谢

4

0 回答 0