Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 Adobe Flex对象不是“;“可写”;_Actionscript 3_Oop_Apache Flex_Flex4 - Fatal编程技术网

Actionscript 3 Adobe Flex对象不是“;“可写”;

Actionscript 3 Adobe Flex对象不是“;“可写”;,actionscript-3,oop,apache-flex,flex4,Actionscript 3,Oop,Apache Flex,Flex4,这里的情况很奇怪:因为声明为public的对象可以从一个方法“写入”,而不能从另一个方法写入 以下是一些代码部分: <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/fl

这里的情况很奇怪:因为声明为public的对象可以从一个方法“写入”,而不能从另一个方法写入

以下是一些代码部分:

<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)"/>

...
...
这个对象不能从侦听器访问(即可写),而可以从其他方法访问(可写),这有什么特殊原因吗


谢谢

您收到的实际错误消息是什么?假设上面所有的代码都在同一个类中,那么对象是公共/私有的,还是从一个方法或另一个方法访问,都与这个问题无关——应该允许所有的代码(如果所有的代码都在同一个类中)。没有语法错误。但是,
promenaapadacane\u clickHandler
方法无法将对象字段设置为false。也就是说,这个代码
obavestenja={korak10n:false,korak6o:false,korak8o:false,korak10o:false}对对象不做任何操作。所有内容都在同一个mxml文件中。所有代码都包含在同一个
fx:script
标记中。我把代码的所有“重要”部分都放在这里了。不知道为什么我不能“重置”
obavestenja
object。嗯,这没有意义,因为你没有理由不能做你想做的事情。您是否已验证正在执行单击处理程序(例如,面板的可见性是否发生变化?是否获得控制台输出?),或者重置对象后是否正在执行
pingOKHandler()
方法?或者正在更新另一个对象?我认为这个问题与上面的问题类似(虽然没有我建议的简单问题那么明显)。我会使用调试器逐步检查代码,看看执行/更新了什么。例如,您可以检查
obavestenja
对象并记下它的内存地址。然后,当单击处理程序运行时,在重置对象之前,查看是否引用了相同的对象。并查看重置对象后对象的外观,等等…谢谢-我从未使用过调试器,但它很有意义:)