1.如果使用MVC框架,相信这并不是一个问题。而如果没有使用的话,可以用类似的方法设置一个单例,子窗口和父窗口通过这个单例来交互消息,如果需要解耦,请发送自定义事件。总之,只要按照MVC思路来做就可以了。
2.类似JS,在子窗口的构造函数里增加一个参数,将父窗口传参进去。MXML没有构造函数,用一个属性来保存父窗口引用也可以。
3.无论是createPopUp还是addPopUp,他们都有一个返回值,得到子窗口的实例。可以对这个实例监听remove事件,并在这个事件中直接读取子窗口需要返回给父窗口的属性。(记得要将这个事件最终移除)
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Panel x="94" y="178" width="503" height="347" layout="absolute">
<mx:TextInput x="134" y="64" id="tit_usr" text="username"/>
<mx:TextInput x="134" y="125" id="tit_psw" text="password"/>
<mx:Button x="171" y="209" label="Submit" click="mytw_click()"/>
</mx:Panel>
<mx:Script>
<![CDATA[
import mx.containers.TitleWindow ......
package event
{
import flash.events.Event;
public class CustomEvent extends Event
{
public var evObject:Object;
public function CustomEvent(obj:Object, type:String)
{
super(type);
evObject = obj;
}
override public function clone():Event
{
return new CustomEvent(evObject, type);
}
}
}
这个就是一个自定义控件,它和传统的区别在于可以自己传送一个参数过去,比如两个界面的参数传递。
比如这样的一个例子,当datagrid ......
2种方法,
一,利用js读取黏贴版:
var content = clipboardData.getData("Text");
document.getElementById("${application}").getClipboardData(content);
二,直接复制到datagrid
在DataGrid中,当按下Ctrl键时,我们创建一个隐藏的文本(TextField)组件,并将焦点定位给它,这样,我们就可以接受任何通过Ctrl+V粘贴过来的数据。相应的我们也将DataGrid选择行数据以TSV格式拷贝到TextField组件中,并且将所有的文本选择,这样我们使用Ctrl+C操作就可以复制当前行所有数据了。
监听隐藏文件组件的textInput事件。如果有任何数据被粘贴的话,那么在这里数据将被解析,并插入到DataGrid中。
当Ctrl键释放后,移除隐藏的文本组件
看例子代码:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<!--[CDATA[
import flash.events.KeyboardEvent;
private function dataGridKeyDownHandler(event:KeyboardEvent):void
{
if (event.ctrlKey && !dataGrid.getChildByName("clipboardProxy"))
{
// Add an invisible Te ......
Flex Project Nature/Add Flex Project Nature 执行后出现以下错误,
Severity and Description Path Resource Location Creation Time Id
Server SDK: Directory does not contain a Flex SDK.
需要在工程属性的Flex compiler 里设置Flex SDK.
......
试用了一下Flex,创建HelloWorld应用的顺序如下:
1 创建文件: HelloWorld-app.xml
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://ns.adobe.com/air/application/1.5">
<id>com.kdevn.flex.HelloWorld</id>
<version>0.1</version>
<filename>HelloWorld</filename>
<initialWindow>
<content>HelloWorld.swf</content>
<visible>true</visible>
<systemChrome>none</systemChrome>
<width>400</width>
<height>200</height>
</initialWindow>
</application>
2. 创建文件: HelloWorld.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApp ......
1.复制内容到系统剪贴板
System.setClipboard(strContent);
2.复制一个ArrayCollection
//dummy solution( well, it works )
var bar:ArrayCollection = new ArrayCollection();
for each ( var i:Object in ac ){
bar.addItem( i );
}
// fantastic ! //
var bar:ListCollectionView = new ListCollectionView( ListCollectionView( ac ).list );
3.打开一个新浏览器窗口
navigateToURL(new URLRequest('http://ntt.cc'), '_blank');
4.刷新浏览器
navigateToURL(new URLRequest("javascript:location.reload();"),"_self");
5.关闭浏览器
navigateToURL(new URLRequest("javascript:window.close()"),"_self");
6.设置Alert 窗口的背景为透明
Alert
{
modalTransparency:0.0;
modalTransparencyBlur:0;
}
7.取随机颜色
lbl.setStyle('color', 0xfffff ......