actionscript 3 - Adobe Flex Project: Buttons seem to be calling wrong methods -


when run code, if click 'testexporttocsv' button, application executes expected ['save file to...' window opens]. however, once click button, other 2 buttons somehow trigger same window ['save file to...'] open if had clicked 'testexporttocsv' button. whilst debugging application, learned other 2 buttons indeed entering correct click handling method although somehow end executing function 'writecsv(event:mouseevent)' declared inside function 'writetoout()' called when 'testexporttocsv' button clicked.

please explain why happening

<?xml version="1.0" encoding="utf-8"?> <s:windowedapplication 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="601"                    backgroundcolor="#3b5998"                     creationcomplete="windowedapplication1_creationcompletehandler(event)"> <fx:script>     <![cdata[         import mx.events.flexevent;         import mx.rpc.http.httpservice;          protected function windowedapplication1_creationcompletehandler(event:flexevent):void         {}          /** ########    click handlers    ######## */         protected function csvbutton_clickhandler(event:mouseevent):void{             trace("...inside csvbutton_clickhandler(event:mouseevent) ");             textbox.text = "in export csv method";             writetoout();         }         protected function queryserver_clickhandler(event:mouseevent):void{             trace("...inside queryserver_clickhandler(event:mouseevent) ");             textbox.text = "in query server method";             servicerequest.url = "https://msppluto.com/planholders_flex.php?customerid=15";             servicerequest.send();         }         protected function refresh_clickhandler(event:mouseevent):void{             trace("...inside refresh_clickhandler(event:mouseevent) ");             textbox.text = "in refresh method";             validatenow();         }          /** ########    write ...    ######## */         protected function writetoout():void{             var myarray:array = [];              for(var i:int = 0; < 100; i++)                 myarray[i] = {a:math.random()*100, b:math.random()*100, c:math.random()};              var csv:string = '';              for(i = 0; < 100; i++)                 csv += myarray[i].a + ',' + myarray[i].b + ',' + myarray[i].c + '/n';              stage.doubleclickenabled = true;             stage.addeventlistener(mouseevent.click, writecsv);              // why method being called when click different             // button ?????????????????????????????????????????             function writecsv(event:mouseevent):void{                 var file:filereference = new filereference();                 var bytes:bytearray = new bytearray();                 bytes.writeutfbytes(csv);                 file.save(bytes, 'test.csv');             }         } // end writetoout      ]]> </fx:script>  <fx:declarations>     <s:httpservice         id="servicerequest"         url="https://msppluto.com/planholders_flex.php"         useproxy="false">     </s:httpservice> </fx:declarations>  <s:label id="headline" text="http service" fontsize="45" x="10" y="10" color="#ffffff"></s:label> <s:button id="testexporttocsv" x="14" y="187" minwidth="110" label="export csv" click="csvbutton_clickhandler(event)"/> <s:button id="queryserverbutton" x="14" y="216" minwidth="110" label="query server" click="queryserver_clickhandler(event)"/> <s:button id="refreshscreen" x="14" y="245" minwidth="110" label="refresh" click="refresh_clickhandler(event)"/>  <s:textinput id="textbox" x="197" y="216" widthinchars="25"  />  <mx:datagrid id="datagridforservicerequest" x="575" y="160"     dataprovider="{servicerequest.lastresult.planholders.planholder}">     <mx:columns>         <mx:datagridcolumn headertext="user id" datafield="userid"/>         <mx:datagridcolumn headertext="user name" datafield="username"/>     </mx:columns> </mx:datagrid> 

i dont know context of problem. problem line stage.addeventlistener(mouseevent.click, writecsv);

you can make

testexporttocsv.addeventlistener(mouseevent.click, writecsv);

and have place above statement in creation complete event handler , bring function outside writeout function., otherwise not execute first time

hope helps


Comments

Popular posts from this blog

node.js - Using Node without global install -

How to access a php class file from PHPFox framework into javascript code written in simple HTML file? -

java - Null response to php query in android, even though php works properly -