我是flex的新手。我有一个问题:)
我有过
[Bindable]
private var model:AlgorithmModel = new AlgorithmModel();
private var serviceProxy:Algorithm = new Algorithm( model ); 在MXML中
private function Show():void
{
// now model.Solve_SendResult = null
while(i<model.Solve_SendResult.length) //
{
Draw(); //draw cube
}
}
private function Solve_Click():void
{
//request is a array
Request[0] = 2;
Request[1] = 2;
Request[2] = 3;
serviceProxy.Solve_Send(request);
Show();
}
<s:Button x="386" y="477" label="Solve" click="Solve_Click();"/>当我调用serviceProxy.Solve_Send(request);的时候,请求是数组,我想在我的代码中使用model.Solve_SendResult,flex来画很多立方体,使用papervison3d,但是第一次我收到了model.Solve_SendResult = null。但当我再次点击时,一切都正常。
有没有人帮我?谢谢?
发布于 2011-12-23 02:58:59
model.Solve_SendResult对象包含已执行的serviceProxy.Solve_Send(请求)方法的结果。Solve_Send将异步执行,因此,当您触发show方法时,Solve_SendResult对象可能仍然为空。
作为一种解决方案,您可以使用以下方法:
包foo {导入类型;公共类DrawEvent扩展事件{公共静态常量DATA_CHANGED:String = "dataChanged";公共函数DrawEvent(类型:String,bubbles:Boolean=false,cancelable:Boolean=false) {DrawEvent(类型,气泡,可取消);}}}算法类中的
Event(name=DrawEvent.DATA_CHANGED,type="foo.DrawEvent")公共类算法扩展EventDispatcher{ //您的代码
公共虚函数Solve_SendHandler(dispatchEvent:ResultEvent):void{dispatchEvent( DrawEvent(DrawEvent.DATA_CHANGED));//您的代码}在您的MXML类中创建
http://www.adobe.com/2006/mxml“layout="absolute”initialize="onLoad()">公共函数onLoad():void { serviceProxy.addEventListener(DrawEvent.DATA_CHANGED,onDataChanged);}私有函数onDataChanged(event:DrawEvent):void{ while(i
私有函数Solve_Click():Request1 { //request is a array Request = 2;request= 2;Request2 = 3;serviceProxy.Solve_Send(request);}
就是这样!因此,上面的代码基本上执行以下操作:您向服务(算法类)添加了一个侦听器,该侦听器正在侦听DrawEvent.DATA_CHANGED事件。当您的客户端接收到Solve_Send调用的结果时,将分派DrawEvent.DATA_CHANGED。因此,onDataChanged将绘制您的立方体或做您想做的任何事情:)
上面的方法是基本的,您必须知道事件在flex中是如何工作的,以及如何处理它。此处提供了更多信息:
http://livedocs.adobe.com/flex/3/html/help.html?content=createevents_3.html http://livedocs.adobe.com/flex/3/html/help.html?content=events_07.html
向你致敬,西里尔
https://stackoverflow.com/questions/7991248
复制相似问题