按作者归档: Jack

[转]FlashBuilder中使用fl组件

意思就是:用Flash CS创建一个flash,将需要的fl组件拖进舞台,然后导出swc文件 在FlashBuilder中引入该swc,这时就能在代码中直接new这个fl组件了 How to Use Flash CS’s Components in Flex Builder To generate the .swc file in Flash CS3, we follow these steps: 1) Make a new Flash CS3 ActionScript 3.0 .fla file. 2) Drag the desired component(s) to the Library. In this example, we’ll drag the TextArea component to the Library. 3) Choose [...]

AS3在本地选择图片并预览(仅限FlashPlayer10+)

(仅限FlashPlayer10+) <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="application1_creationCompleteHandler(event)"> <fx:Script> <![CDATA[ import mx.events.FlexEvent; private var file:FileReference; private var loader:Loader; protected function button1_clickHandler(event:MouseEvent):void { file = new FileReference(); file.addEventListener(Event.SELECT,file_selectHandler); file.browse ([new FileFilter("Images(*.jpg;*.jpeg;*.png;*.gif)","*.jpg;*.jpeg;*.png;*.gif")]); } protected function file_selectHandler(event:Event):void{ file.removeEventListener(Event.SELECT,file_selectHandler); file.addEventListener(Event.COMPLETE,file_completeHandler); file.load(); } protected function file_completeHandler(event:Event):void{ file.removeEventListener(Event.COMPLETE,file_completeHandler); loader.loadBytes(file.data); } protected function loaderCompleteHandler(event:Event):void{ var $bmd:BitmapData = new BitmapData(loader.width,loader.height,true,0x00FFFFFF); [...]

Flash在IE全屏时 使用Deeplinking修改网址会退出全屏的bug解决方案

BUG描述: IE浏览器下,Flash全屏时 一旦使用deeplinking修改网址参数,就会导致Flash退出全屏 解决方案: 在全屏时不再修改deeplinking, 而当退出全屏时,使用最后的deeplinking 可以侦听stage类的事件FullScreenEvent. FULL_SCREEN 在任何被添加到了舞台的DisplayObject对象内部,都可以这样写: this.stage.addEventListener(FullScreenEvent.FULL_SCREEN, stage_fullScreenHandler); //侦听全屏变化的事件 private function stage_fullScreenHandler(event:FullScreenEvent):void{ //event.fullScreen为false的时候,是退出全屏,true是进入全屏 if(!event.fullScreen){ //修改deeplinking }

Flex4 SkinnableContainer,BorderContainer隐藏子内容

SkinnableContainer及其子类BorderContainer等在添加了子内容后, 即使子内容宽高超过了容器本身的宽高,子内容也会被正常显示出来, SkinnableContainer是无法裁剪子内容的,而且也没有默认属性可以设置 但如果想实现容器裁剪子内容,可以用以下方法实现 <s: SkinnableContainer id=”myBC” creationComplete=”myBC.contentGroup.clipAndEnableScrolling = true”> 即:在容器创建完成后设置它的属性contentGroup的clipAndEnableScrolling为true 原理: BorderContainer继承自SkinnableContainer,这两个组件都不是自身添加显示对象的,而是使用contentGroup作为子内容的容器, 而contentGroup实际上是一个Group对象 Group本身有一个属性:clipAndEnableScrolling,当它为true时,就会裁剪内容,默认是false

FlashFlex发布可访问本地的SWF

无论是Flex还是Flash编译后的SWF都只可方位网络或者只可访问本地数据,不可以同时访问二者, Flex默认是只可访问网络,要把Flex编译后的SWF设为只可访问本地数据模式,要在Flex项目的编译参数中增加:-use-network=false 在Flash IDE中,设置方式:在菜单工具栏中选择File(文件)->Publish Settings(发布设置),在弹出窗口中选择Flash标签,在Local playback中选择需要的访问模式

Flex4动态加载和切换CSS

Flex4中动态加载CSS文件的方式已经和Flex3有了一定的区别 主要步骤如下: 1.编写不同的CSS文件 见后文 2.将CSS文件编译成SWF文件 在FlashBuilder中右键CSS文件,选择Compile CSS to SWF,

漫步PureMVC(一) 极简入门

漫步PureMVC(一) 极简入门

Flex中的Base64加解密

Flex sdk3就内置了Base64的加/解密工具类 分别是 mx.utils.Base64Encoder mx.utils.Base64Decoder Base64Encoder用法如下: var $orgin:String = this.textOrigi.text;//获取原始字符串 var $base64:Base64Encoder = new Base64Encoder(); $base64.insertNewLines = false;//该值等于true时,输出的结果会自动换行,默认为true, $base64.encodeUTFBytes($orgin);//这里注意,如果想加密中文就不要使用$base64.encode(); var $result:String = $base64.toString();//输出结果 Base64Decoder用法如下: var $origi:String = this.textEncodeResult.text;//获取原始字符串 var $base64:Base64Decoder = new Base64Decoder(); $base64.decode($origi); var $result:String = $base64.toByteArray().toString();//输出结果,decode类只能输出ByteArray类型的数据,因此要转换成string 完成代码: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <fx:Script> <![CDATA[ import mx.utils.Base64Decoder; import mx.utils.Base64Encoder; protected [...]

Air/Flex动态加载module及其依赖的RSL

有关Flex和Air中如何使用RSL网上教程很多,google一下即可,这里不多做叙述了 而这次遇到的问题是这样的: 发布时只发布一个主程序(Web或者Air方式),而不发布所需要的module及其依赖的swc,只在运行时根据需要加载module及其依赖的swc 1.       建立一个实验用的module工程: 先准备一个module工程,普通的Flex Project(web)即可,主程序名无所谓,因为这个工程只是为了编译module对象用的 在Properties->Flex Build Path中引入所要依赖的swc,这个例子中使用了TweenLite.swc 注意AIR project的默认Link Type是Merge into code,改成RSL。如图: 新建一个包modules并新建一个module程序:MyModule1.mxml 到Properties->Flex Modules中修改该module的optimize属性为none,如下图 点击Edit按钮,弹出下图 选择Do not optimize(…) 在MyModule1.xml中使用TweenLite做一个简单的动画: TweenLite.to(<strong>this</strong>.goed,4,{x:500}); 编译工程, 此时MyModule1.mxml被编译生成为MyModule1.swf TweenLite.swc会被编译成TweenLite.swf 复制到要被加载的目录下,我的是 http://127.0.0.1/testflex/TweenLite.swf http://127.0.0.1/testflex/modules/MyModule1.swf 2.       建立主工程(Flex Web): 新建一个Flex Project(web),不要使用引入TweenLite.swc 新建一个用来控制加载TweenLite的类: tasks/TaskLoadRSL.as 在这个类中,使用URLLoader将TweenLite.swc从http://127.0.0.1/testflex/TweenLite.swf上加载下来,主要代码如下: var loader:Loader = new Loader(); var context:LoaderContext = new LoaderContext(); context.applicationDomain = ApplicationDomain.currentDomain;//必须有这一句,RSL必须和主程序在同一个域中 loader.load(new URLRequest(this.web),context); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,localLoadCompleteHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,localLoadIoErrorHandler); [...]

Bug:Flex自动帧频1000!

用Flex4才发现了这个问题, 当用spark添加一个mx组件时不会有问题,但当这个mx组件中还有其他组件 例如<mx:HBox><mx:Canvas/></mx:HBox> stage.frameRate会瞬间达到1000! 之后会自动恢复到默认的帧频(如果不手动设定,会是24) 这时不用担心什么问题, 但如果frameRate达到1000的这段时间中,添加了一个EnterFrame事件, 并且在EnterFrame的响应函数中,调整某个组件的位置, frameRate就不会恢复回24,而是一直持续1000,知道取消了EnterFrame为止 源文件: src 源码如下: Application.mxml: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" frameRate="12" backgroundColor="0xFF00FF"> <fx:Script> <![CDATA[ import components.MyComponent; import mx.containers.HBox; import mx.core.UIComponent; import mx.events.FlexEvent; protected function button2_clickHandler(event:MouseEvent):void { trace(this.stage.frameRate); this.txt.text = "Current FrameRate:"+this.stage.frameRate.toString(); } protected var _box:UIComponent; protected function button3_clickHandler(event:MouseEvent):void { _box = new MyComponent(); [...]