Apache flex 加载URL时不会激发Event.Complete
我是一名经验丰富的开发人员,但这是关于flex的一些非常基本的东西,我无法理解。在下面的类中,我不确定为什么在图像加载url时不会执行imageLoaded函数。这里有比赛条件吗?创建此对象并调用setPicture时,应用程序已完全加载在这种情况下,如何使事件正确触发。完成事件? line和Log.info函数对我来说很方便,它们肯定能工作 以下是我的MXML定义:Apache flex 加载URL时不会激发Event.Complete,apache-flex,actionscript-3,Apache Flex,Actionscript 3,我是一名经验丰富的开发人员,但这是关于flex的一些非常基本的东西,我无法理解。在下面的类中,我不确定为什么在图像加载url时不会执行imageLoaded函数。这里有比赛条件吗?创建此对象并调用setPicture时,应用程序已完全加载在这种情况下,如何使事件正确触发。完成事件? line和Log.info函数对我来说很方便,它们肯定能工作 以下是我的MXML定义: <?xml version="1.0" encoding="utf-8"?> <photo:PhotoClas
<?xml version="1.0" encoding="utf-8"?>
<photo:PhotoClass xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:photo="com.xxx.widgets.photo.*">
<mx:Image id="image"/>
</photo:PhotoClass>
我想出来了
除非精灵连接到应用程序,否则eventListeners不会注册。本例中的eventListener是在将精灵添加到其父类之前添加到构造函数中的。我把image.addEventListener移到了setPicture,它成功了。我想出来了
除非精灵连接到应用程序,否则eventListeners不会注册。本例中的eventListener是在将精灵添加到其父类之前添加到构造函数中的。我将image.addEventListener移到了setPicture,它成功了
除非精灵附加到应用程序,否则eventListeners不会注册
你能给我推荐信吗?因为我相信这个问题是另外一回事
当您声明一个mxml文件,并将PhotoClass
作为其根标记时,您正在扩展PhotoClass。mxml中的标记
在mxml类中定义了Image类型的公共变量;您已经有了一个公共var image:image代码>在超类中。这将产生一个冲突——我预计会出现编译时错误
我的猜测是,由于构造函数是首先被调用的,它将Image
对象分配给公共变量Image
。当执行mxml并创建子项时,它会将一个新的Image
对象分配给公共变量Image
(而不是正确地抛出错误)。现在,事件侦听器被添加到构造函数中创建的Image
实例中,但是当您在setProperty
中设置Image.source
时,它是一个完全不同的对象。这就是为什么当您将事件侦听器移动到setPicture
时,它会起作用-在这里您将它分配给新对象
将mxml图像标记的id
更改为其他内容,即使事件侦听器是从构造函数添加的,它也会工作。将public var image的名称更改为其他名称,您将在PhotoClass
中得到编译时错误
顺便说一句,mxml中的图像标签是做什么的?它是用来显示不同的图像的吗?在这种情况下,您必须更改其id
<!-- MyCanvas.mxml -->
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Label id="lbl"/>
</mx:Canvas>
<!-- the main application class -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="*"
creationComplete="onCreate()" layout="vertical">
<local:MyCanvas id="canvas1"/>
<mx:Script>
<![CDATA[
public var canvas2:MyCanvas;
public function onCreate():void
{
this.canvas1.lbl.text = "MyCanvas_1";
canvas2 = new MyCanvas();
this.addChild(canvas2);
canvas2.addEventListener(FlexEvent.CREATION_COMPLETE, onCanvas2Created);
}
public function onCanvas2Created(e:FlexEvent):void
{
this.canvas2.lbl.text = "MyCanvas_2";
}
]]>
</mx:Script>
</mx:Application>
除非精灵附加到应用程序,否则eventListeners不会注册
你能给我推荐信吗?因为我相信这个问题是另外一回事
当您声明一个mxml文件,并将PhotoClass
作为其根标记时,您正在扩展PhotoClass。mxml中的标记
在mxml类中定义了Image类型的公共变量;您已经有了一个公共var image:image代码>在超类中。这将产生一个冲突——我预计会出现编译时错误
我的猜测是,由于构造函数是首先被调用的,它将Image
对象分配给公共变量Image
。当执行mxml并创建子项时,它会将一个新的Image
对象分配给公共变量Image
(而不是正确地抛出错误)。现在,事件侦听器被添加到构造函数中创建的Image
实例中,但是当您在setProperty
中设置Image.source
时,它是一个完全不同的对象。这就是为什么当您将事件侦听器移动到setPicture
时,它会起作用-在这里您将它分配给新对象
将mxml图像标记的id
更改为其他内容,即使事件侦听器是从构造函数添加的,它也会工作。将public var image的名称更改为其他名称,您将在PhotoClass
中得到编译时错误
顺便说一句,mxml中的图像标签是做什么的?它是用来显示不同的图像的吗?在这种情况下,您必须更改其id
<!-- MyCanvas.mxml -->
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Label id="lbl"/>
</mx:Canvas>
<!-- the main application class -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="*"
creationComplete="onCreate()" layout="vertical">
<local:MyCanvas id="canvas1"/>
<mx:Script>
<![CDATA[
public var canvas2:MyCanvas;
public function onCreate():void
{
this.canvas1.lbl.text = "MyCanvas_1";
canvas2 = new MyCanvas();
this.addChild(canvas2);
canvas2.addEventListener(FlexEvent.CREATION_COMPLETE, onCanvas2Created);
}
public function onCanvas2Created(e:FlexEvent):void
{
this.canvas2.lbl.text = "MyCanvas_2";
}
]]>
</mx:Script>
</mx:Application>
干得好;请务必把你自己的答案标记为正确答案。@www我相信这个问题是另外一回事。你能检查一下我的答案并确认一下吗?我现在没有使用编译器的权限。干得好;请务必把你自己的答案标记为正确答案。@www我相信这个问题是另外一回事。你能检查一下我的答案并确认一下吗?我现在没有访问编译器的权限。当我看到问题已经得到了回答;我没有仔细看一眼。幸运的是,我现在也不在编译器中。“mxml中的标记在mxml类中定义了一个类型为Image的公共变量;而您在超类中已经有一个公共变量Image:Image;。这将产生冲突-我预计会出现编译时错误。”Flex要求您再次声明此对象(作为公共对象)如果您希望能够在单独的类中执行任何脚本,请使用actionscript。因此,没有编译错误。事实上,它会抛出一个您没有遇到的错误。@Lava Flex要求您在actionscript中再次声明此对象(作为公共对象),如果您希望能够在单独的类中执行任何错误的脚本编写。每个mxml组件在类中创建一个公共变量,其名称是其id属性。您可以使用id属性+1从单独的类访问该组件,因为这很有意义。当我看到问题已经得到了回答;我没有仔细看一眼。幸运的是,我现在也不在编译器旁