FlexBuilder编译参数-keep-generated-actionscript

Categories: Flex; Tagged with: ; @ October 13th, 2008 16:17

MXML最终还会转换为ActionScript.

如有需要, 可在工程属性的Flex Compiler 中 的 Additional Compiler argument中加入:

keep-generated-actionscript

这样在编译时FlexBuilder自动在src下建立一个generated目录, 并将生成的AS代码全部放到该目录中.

Too Simple的一个东西, 记录一下吧, 不然每天都在用, 但却不知道这个参数是咋写的…

监听Flex中TextArea的DoubleClick Event

Categories: Flex; Tagged with: ; @ October 13th, 2008 16:08

在TextArea中显示一段文字, 在双击时打开一个弹出的编辑窗口, 或者使之的Editable由false变为true. 需要先监听DoubleClick.

但作为一嫩鸟, 我总是发现他监听不了, click可以,但DoubleClick不可以.

自习看了TextArea的API,发现他有个继承自UIComponent的DoubleClick的属性,该属性默认为False,将之设置为True之后便可以触发DoubleClick事件, 进而完成整个过程.

定义监听函数

	 	_textArea.addEventListener(MouseEvent.DOUBLE_CLICK, addDataGrid);

响应DoubleClick事件

Categories: Flex; Tagged with: ; @  October 13th, 2008 10:26

1. 简介 Flex提供了一组访问普通Web应用的HTTP类库和组件,提供了完整的基于ASP.NET,Java.PHP服务端技术的指导实践方案.对于HTTPService服务的访问Flex提供了两类访问模式:

名称

说明

文本方式的访问

以纯文本形式进行数据访问.以纯文本形式发送请求,以纯文本形式返回和处理请求

基于XML方式的访问

以XML形式访问数据,以XML方式发送请求,处理请求.

Flex基于HTTPService访问方式不是基于标准的协议.完全是由服务端开发人员与客户端开发人员定义的通信方式.这虽然不能成为标准的服务接口,但可以大大提高特殊应用的数据传输效率.

Flex访问HTTPService可以使用类库和组件两种方式.由于HTTPService不是标准协议,因此在进行HTTPService访问的时候,需要自己定义数据交换格式.

· 使用HTTPService类库.Flex对于HTTPService的访问方式与传统的B/S结构很像,同样是通过POST和GET方法发送请求,但Flex发送请求和处理结果的方式是异步的

· Flex访问HTTPService标签: 在Flex总一般会使用标签的方式访问HTTPService,访问HTTPService的标签为<mx:HTTPService></mx:HTTPService>

2. 实现:

Flex访问WebService

由于WebService是基于XML和SOAP协议的,所以Flex访问WebService的类库和组件封装了对请求内容以及响应内容的处理,这样可以在不需要了解WebService细节的情况下,通过使用Flex对WebService进行调用.

· Flex访问WebSerivice的类库集中在mx.rpc.soap包下,多使用WebService类.该类的属性和方法都是围绕着WebService规范和定义展开的.

· Flex访问WebService标签: 虽然可以直接通过类库的方式直接访问WebService,但通常会使用<mx:WebService>

3. 举例  使用http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx?wsdl作为我们要使用的WebService源.
具体信息请参见webxml.com.cn

	
		
			
				
					sh000001
				
			
		
	
	
	
		
		
	

下面是AS代码:

		import mx.controls.Alert;
		import mx.rpc.events.FaultEvent;
		import mx.rpc.events.ResultEvent;
		
		/**
		 * 监听ws,以便作出响应;
		 * 运行getStockInfoByCode.send(),发出请求
		 */ 
		private function sendCount():void{
			ws.addEventListener(ResultEvent.RESULT,showResult);
			ws.addEventListener(FaultEvent.FAULT,faultResult);
			ws.getStockInfoByCode.send();
		}
		
		/**
		 * 收到数据后现显示数据
		 */ 
		private function showResult(rs:ResultEvent):void{
			var rsStr:String  = new String(rs.result);
			var resultArray:Array = rsStr.split(",");
			
			shangzheng.text = resultArray[3];
			trace("收到" + shangzheng.text);
		}
		
		/**
		 * 遇到错误则报错.
		 */ 
		private function faultResult(faultmessage:FaultEvent):void{
			var faultStr:String = new String(faultmessage.message);
			Alert.show(faultStr,"访问错误");
		}

效果:

image image

Flex中使用Programmatic Skin Creating Programmatic Skins

Categories: Flex; Tagged with: ; @ October 12th, 2008 15:51

1.选择以下一个类作为要创建的Skin的父类
Border或其子类

ProgrammaticSkin或其子类

RectangularBorder或其子类

UiComponent或其子类

2.实现updateDisplayList().将所有Drawing或Styling元素写入该方法中.
3.如果是ActionScript类, 实现其构造函数
4.[可选]实现measuredWidth与measureHeight的get方法

5.如果继承自Border或是RectangularBorder,为borderMetrics属性实现一个get方法

举例:改变Button的Skin. 使得Button上增加一个"X"号

1.建立一个Skin, 因为是Button,选择继承自ButtonSkin

package com
{
import mx.skins.halo.ButtonSkin;

public class crossButtonSkinAS extends ButtonSkin 
{
	private var cross:Boolean;
	
	//构造函数
	public function crossButtonSkinAS() {
		super();
	}
	
	/**
	 * 重写styleChanged函数.当style属性改变时,会激发该函数,Whenever style changes, redraw this skin;
	 * 重写改函数,使之获取新的透明度;
	 */ 
	override public function styleChanged(styleProp:String):void {
		trace("StyleChanged: " + styleProp);
		styleSetUp();
		
		super.styleChanged(styleProp);
	}
	
	/**
	 * 获得cross
	 */ 
	public function styleSetUp():void {
		cross = getStyle("cross") as Boolean;
		if(cross != true) {
			cross = false;
		}
	}
	
	override protected function updateDisplayList(unscaledWidth:Number,unscaledHeight:Number):void {
		super.updateDisplayList(unscaledWidth, unscaledHeight);
		
		if(cross) {
			graphics.moveTo(0,0);
			graphics.lineStyle(1,0x000000);
			graphics.lineTo(unscaledWidth,unscaledHeight);
			graphics.moveTo(unscaledWidth,0);
			graphics.lineTo(0,unscaledHeight);
		}
	}
}//end of class ButtonUpSkinAS
}//end of package com

 

2.在MXML中增加一个Style

.crossButton {
  skin: ClassReference("com.crossButtonSkinAS");
  cross: true;
}

增加一个Button:

	

效果:

image

Flex运行时动态加载Style Loading Style Sheets At Run Time

Categories: Flex; Tagged with: ; @ October 12th, 2008 15:25

在运行时通过StyleManager的loadStyleDeclarations()加载基于SWF文件的CSS.
1.创建一个CSS文件 newStyle.css

/* CSS file */
Button {
      fontSize: 16;
}

2.右键Compile CSS To SWF,将CSS编译为SWF文件 生成一个newStyle.swf文件

3.使用StyleManager的loadStyleDeclarations()加载CSS

	public function loadStyle():void {
		StyleManager.loadStyleDeclarations("newStyle.swf");
	}
	public function unloadStyle():void {
		StyleManager.unloadStyleDeclarations("newStyle.swf");
	}
	
	
	

效果:

在点击"LoadStyle"时,所有Button的字体将变为16号, 在点击"UnloadStyle"时,字体恢复默认

Newer Posts <-> Older Posts



// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.