Browsing the archives for the Flex category

Flex中组件访问父对象中的函数等

      在做循环数据列表时,将重复循环块做成一个组件,在组件按钮中调用父对象的内容。      解决方法:parentDocument 。      关键代码      父文件:      <mx:itemRenderer>      <mx:Component>            <ns1:builddialogcomponent/>      </mx:Component>        </mx:itemRenderer>      组件:      public function OKClick(e:MouseEvent):void{    parentDocument.Room();}      内容:      <mx:Label text=”{data.name}”/><mx:Button label=”OK” click=”OKClick(event)”/>      这样就能在组件中调用父对象的Room函数了。

0 Comments

在flex module中向swf发送自定义事件

      存在自定义事件myEvent,在flex里一个module中加载了一个外部swf,现需要在module里向swf发送一个事件,关键代码如下:map = mapSwf.content as MovieClip;                var evt:MapPrivateEvent = new MapPrivateEvent(MapPrivateEvent.INIT_MAP_EVENT);                evt.f=stage.stageWidth;                evt.g=stage.stageHeight;                MovieClip(map).dispatchEvent(evt);      调试报错:TypeError:Error#1034:强制转换类型失败:无法将 com.events.MyEvent@b24d511 转换为 com.events.MyEvent      在网上找了下,大致是一个域的问题,module和swf不在同一个域,尽管是在这个module里调用swf的。个人理解就是外部调用进来的swf被module认为是不同域,在主程序里添加自定义事件的定义,如private var test:myEvent;      另外,马哥给了我另一种方法,应该是从根本上解决这个问题的,更改加载swf的方法,代码如下:private function loadflash():void{loader = new Loader();var context:LoaderContext=new LoaderContext();context.applicationDomain=new ApplicationDomain(ApplicationDomain.currentDomain);loader.load(new URLRequest(“res/map/citySet.swf”),context);loader.addEventListener(Event.COMPLETE,loadSwfComplete);}没测试,应该没问题:)

0 Comments

flash中使用多个类文件

      项目需要,在一个swf文件中要实现三种大功能,为了方便管理,写了三个类文件,但是flash中设置文档类貌似只有一个,因此用以下方法实现。      flash文件:main.fla;      主类文件:main.as;      功能类文件:ahello.as,bhello.as,chello.as;            flash文件里设置文档类main.as。            main.as代码:package{    import flash.display.MovieClip;    import flash.display.Sprite;    public class main extends MovieClip    {        private var canvas:Sprite;        public function main():void        {            init();        }        private function init():void        {             build();        }        private function build():void        {            canvas = new Sprite();            this.addChild(canvas);            var a:ahello = new ahello();            var b:bhello = new bhello();            var c:chello = new chello();            canvas.addChild(a);            canvas.addChild(b);            canvas.addChild(c);        }    }}      ahello.as代码:package{    import flash.display.MovieClip;    public class ahello  extends MovieClip    {        public function ahello():void        {            trace(“a”);        }    }}      其他几个功能类文件以此类推:)      这样就能在一个fla中管理多个as类文件了。      这样abc都各自作为一个子对象加载到主文件里,不用时卸载子对象即可,需要时加载。

0 Comments

设置flex中ComboBox样式

      设置ComboBox中列表的样式:      CSS代码:.ComboBoxStyle{    drop-down-style-name:MyStyle;}.MyStyle{    background-image:Embed(source=’style/swf/chatStyle.swf’,symbol=’listComponent’);    border-style:none;}

1 Comment

空MovieClip的问题

      有如下代码:      var mc:MovieClip=new MovieClip(); var child:Shape=new Shape(); addChild(mc); child.graphics.beginFill(0xCCCCFF,1); child.graphics.drawRect(0,0,200,200); child.graphics.endFill(); mc.addChild(child);      在mc里画一个矩形,成功。      修改代码:      var mc:MovieClip=new MovieClip();var child:Shape=new Shape();mc.height=200;mc.width=200;addChild(mc);child.graphics.beginFill(0xCCCCFF,1);child.graphics.drawRect(0,0,200,200);child.graphics.endFill();mc.addChild(child);      即增加了长宽设置,就显示空白了。     在AS天地会上请教了下,更改空MC尺寸,scaleX sacleY会变成0。

1 Comment

actionscript 中的取整

int()取出整数部分(不推荐)Math类Math.round()向上或向下取最接近的整数,也就是就是四舍五入。Math.floor()小于等于该数字的最接近的整数。Math.ceil()大于等于该数字的最接近的整数。

0 Comments

flex读取RSS

      很无聊,看了下flex,第一个例子。看会英语书,洗洗睡了:)

 

1 Comment