FLEX 相关的文章

F.Assist - Flex SDK 辅助工具

F.Assist主要为辅助Flex SDK而开发出来的程序...
为Flex SDK大量的命令行操作提供友好的用户界面...
暂时只有两个的功能,分别是生成API文档打包类库

F.Assist主要用AS3,然后经由C#处理编译等相关命令..

先看看界面~
F.Assist API生成
查看文章剩余部份
分类: LABS , 标签: , , ,

Flex?Flash?

昨天跟网友讨论了两个关于Flex组件的问题..
然后引发了下面一段对话..
这段对话在我身上不只发生过十次以下..
查看文章剩余部份
分类: OTHER , 标签: ,

自定义FLEX滚动条滑块样式

在Flex里我们可以使用downArrowSkin,upArrowSkin,trackSkin,thumbSkin方法的设置滚动条的样式..
不过由于设计的关系..
滚动条的thumbSkin常设置成一个"点"或一个"块"..
这个块是固定大小的..不像Flex自带的滚动条会随滚动区域的高度而改变..
如果直接设置thumbSkin,那滑块将拉变形~非常难看..
这时候我们可以使用verticalScrollBar里的setScrollProperties方法来调整滑块高度..
查看文章剩余部份
分类: FLEX , 标签: , , ,

Flex笔记(z7z8)(不定期更新,最后更新090506)

获取焦点
application.focusManager.setFocus(对象);

在AS里用PopUpManager时parent的值
PopUpManager.createPopUp(Application.application as DisplayObject,ClassName,false);

设置input获取焦点后的框框颜色
textInput.setStyle("themeColor", 0x000000);

设置验证控件错误提示Style
.errorTip{
	fontSize:12px;
	border-color:#333333;//注意背景颜色需要设置border-color;
}

立刻创建对象
creationPolicy="all";

本地回放
-use-network=false;

设置RadioButtonGroup.selectedValue为Null时,不是真正设置为null,而是会默认选中第一个值,要设置为null,可使用
RadioButtonGroup.selection=null;

ToolTip显示时间
ToolTipManager.hideDelay = 2500;

绑定事件提示
//MXML下的写法
<mx:Metadata>
	[Event(name="youEventName",type="flash.events.Event")]
</mx:Metadata>

//AS下的写法
package{
	[Event(name="youEventName",type="flash.events.Event")]
	public function ClassName{}
}
//需要注意的是...
//]后面不需要写;号
//事件名和类名请使用双引号标注..
//使用单引号使用编译不会发生问题..
//不过FB3的IDE不会出现提示

TypeError: Error #1034: 强制转换类型失败:
无法将 mx.managers::PopUpManagerImpl@7155ac1 转换为mx.managers.IPopUpManager
//方法一
<mx:Script>
	<![CDATA[
	import mx.managers.DragManager;
	import mx.managers.IPopUpManager;            

	// 避免出现:无法将 mx.managers::PopUpManagerImpl@52a09a1 转换为 mx.managers.IPopUpManager 错误
	private var dragManager:DragManager;
	private var popUpManager:IPopUpManager;
	]]>
</mx:Script>

//方法二
//在ModuleLoader的creationComplete方法中加入如下代码
moduleLoader.applicationDomain = ApplicationDomain.currentDomain;
分类: FLEX , 标签: , ,

自定义Flex的Loading界面(源码)

这个方法网上已经有人写过例子...
在这里我只是自己做个实例并记录一下..
首先~自定义Flex加载的原理其实就是继承mx.preloaders.DownloadProgressBar类..然后重写相关的方法..
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
	import flash.text.TextField;
	import flash.text.TextFormat;
	
	import mx.events.FlexEvent;
	import mx.preloaders.DownloadProgressBar;

	public class LoadingExampleProgressBar extends DownloadProgressBar
	{
		private var logo:Loader;
		private var txt:TextField;
		private var _preloader:Sprite;
		public function LoadingExampleProgressBar()
		{
			logo = new Loader();
			logo.load(new URLRequest("l4cd.png"));
			addChild(logo);
			
			var style:TextFormat = new TextFormat(null,null,0xFFFFFF,null,null,null,null,null,"center");
			txt = new TextField();
			txt.defaultTextFormat = style;
			txt.width = 200;
			txt.selectable = false;
			txt.height = 20;
			addChild(txt);
			
			super();
		}
		//最重要的代码就在这里..重写preloader,让swf执行加载的时候~进行你希望的操作~
		override public function set preloader(value:Sprite):void{
			_preloader = value
			//四个侦听~分别是 加载进度 / 加载完毕 / 初始化进度 / 初始化完毕
			_preloader.addEventListener(ProgressEvent.PROGRESS,load_progress);
			_preloader.addEventListener(Event.COMPLETE,load_complete);
			_preloader.addEventListener(FlexEvent.INIT_PROGRESS,init_progress);
			_preloader.addEventListener(FlexEvent.INIT_COMPLETE,init_complete);
			
			stage.addEventListener(Event.RESIZE,resize)
			resize(null);
		}
		private function remove():void{
			_preloader.removeEventListener(ProgressEvent.PROGRESS,load_progress);
			_preloader.removeEventListener(Event.COMPLETE,load_complete);
			_preloader.removeEventListener(FlexEvent.INIT_PROGRESS,init_progress);
			_preloader.removeEventListener(FlexEvent.INIT_COMPLETE,init_complete);
			stage.removeEventListener(Event.RESIZE,resize)
		}
		private function resize(e:Event):void{
			logo.x = (stage.stageWidth - 40)/2;
			logo.y = (stage.stageHeight - 80)/2;
			txt.x = (stage.stageWidth - 200)/2;
			txt.y = logo.y + 40+5;
			
			graphics.clear();
			graphics.beginFill(0x333333);
			graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
			graphics.endFill();
		}
		private function load_progress(e:ProgressEvent):void{
			txt.text = "正在加载..."+int(e.bytesLoaded/e.bytesTotal*100)+"%";
		}
		private function load_complete(e:Event):void{
			txt.text = "加载完毕!"
		}
		private function init_progress(e:FlexEvent):void{
			txt.text = "正在初始化..."
		}
		private function init_complete(e:FlexEvent):void{
			txt.text = "初始化完毕!"
			remove()
			//最后这个地方需要dpe一个Event.COMPLETE事件..表示加载完毕让swf继续操作~
			dispatchEvent(new Event(Event.COMPLETE))
		}
	}
}

自定义了加载类后..我们新建一个app测试一下..
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
	preloader="LoadingExampleProgressBar" 
	backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#333333, #333333]">
</mx:Application>
//请自行增加一“大”体积的东西..必放到网上去测试...

  相关源码 (142.0 KiB, 524 hits)
分类: FLEX , 标签: , ,

在FLEX里显示Video的问题

在Flash里..我们可以直接使用
var _video:Video = new Video()
addChild(_video)
来添加Video对象..


可是在Flex里..上述的代码会提示不可以强制把Video对转转换成UIComponent对象..
我们必须通过VideoDisplay作为"桥"..先把Video添加到VideoDisplay中..
再把VideoDisplay添加到Application中..才可以完成Video的显示.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
	<mx:Script>
		<![CDATA[
			private var _video:Video;
			private function init():void{
				_video = new Video(320,240);
				v_Display.addChild(_video);
				
				//获取cam对象.
				_video.attachCamera(Camera.getCamera());
				_video.width = 320
				_video.height = 240
			}
		]]>
	</mx:Script>
	<mx:VideoDisplay id="v_Display" width="320" height="240"/>
</mx:Application>
分类: FLEX , 标签: ,

关于FLEX生成的SWF设置stage.displayState的问题

首先注意一下.
这里说的是在"FLEX"生成的"SWF"直接运行时,使用"stage.displayState"启用全屏时所遇到的问题...

注意上面""号所提到的关健词..

现在我们先看看代码,下面的代码装在creationComplete事件中调用init()来启动全屏.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
	layout="absolute"
	creationComplete="init()"
	>
	<mx:Script>
		<![CDATA[
			private function init():void{
				stage.displayState = StageDisplayState.FULL_SCREEN; 
			}
		]]>
	</mx:Script>
</mx:Application>
现在保存运行一下swf,却有TypeError..详细信息如下
Main Thread (Suspended: TypeError: Error #1009: 无法访问空对象引用的属性或方法。)  
	swf_fullscreen/init  
	swf_fullscreen/___swf_fullscreen_Application1_creationComplete  
	flash.events::EventDispatcher/dispatchEventFunction [no source]  
	flash.events::EventDispatcher/dispatchEvent [no source]  
	mx.core::UIComponent/dispatchEvent  
	mx.core::UIComponent/set initialized  
	mx.managers::LayoutManager/doPhasedInstantiation  
	Function/http://adobe.com/AS3/2006/builtin::apply [no source]  
	mx.core::UIComponent/callLaterDispatcher2  
	mx.core::UIComponent/callLaterDispatcher  
我们把init()修改一下,如果
private function init():void{
	trace(stage)
}
运行保存运行swf,发现输入null,奇怪的事情发生了..stage竟然为null,那进行stage.displayState当然就报错了...
再次修改程序,使用click调用init(),stage正常输出,那问题大概就是creationComplete调用时,stage初始化..

后来网上查了一下..发现了一个叫callLater的函数,他的功能大概是..进入下一帧的时候,执行函数,我们再次修改代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
	layout="absolute"
	creationComplete="callLater(init)"
	>
	<mx:Script>
		<![CDATA[
			private function init():void{
				stage.displayState = StageDisplayState.FULL_SCREEN; 
			}
		]]>
	</mx:Script>
</mx:Application>
我们在creationComplete事件里,使用callLater(init)来调用init,让init在进入下一侦的时候再全屏..
保存运行swf,问题解决....

ps:另外swf还可以使用fscommand("fullscreen", "true");来进行全屏..这里只是主要讨论stage为null的问题.
分类: FLEX , 标签: , ,

FLEX RSL 应用注意事项

FLEX发布体积过大是每个使用FLEX开发的朋友都知道的

那是因为FLEX在发布的时候会带一个框架文件,框架文件包含了所有的Flex内置类...
该文件大小大概是500多K,以致一个空的FLEX项目.发布后就有500多K

所以FLEX提供了RSL(runtime shared library)(运行共享库??),
让用户只需要下载相同版本的框架文件一次,然后存在FlashPlayer指定的cache目录中..
当下次再浏览应用了RSL的FLEX项目时,就不需要重新下载..从而加快加载速度.
查看文章剩余部份
分类: FLEX , 标签: ,

Flex教程/入门之一:使用 MXML 和 ActionScript 进行编码

Adobe 将 Flex 实施为 ActionScript 类库。 该类库包含组件 (容器和控件)、管理器类、数据服务类和所有其他功能的类。 您通过将 MXML 和 ActionScript 语言与该类库一起使用来开发应用程序。

MXML
MXML 是用于为 Adobe Flex™ 应用程序进行用户界面组件布局的 XML 语言。 您还使用 MXML 来显式定义应用程序的非可视方面, 例如访问服务器端数据源和用户界面组件与数据源之间的数据绑定。

例如, 您通过使用下面的 MXML 语句, 使用 标签来创建 Button 控件的实例:
<mx:button id="myButton" label="I'm a button!"/>
查看文章剩余部份
分类: FLEX , 标签: , , , ,