- 浏览: 1064035 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (695)
- 心情日记 (14)
- AS开发工具 (12)
- 文章转载 (99)
- AIR (5)
- 问题总结 (46)
- SWF格式 (7)
- 测试总结 (10)
- 外文资料 (9)
- 算法技术 (33)
- AS3常用开源库 (43)
- 源码范例 (102)
- FLEX (72)
- FLASH 优化 (33)
- 游戏开发 (49)
- 开发技术 (11)
- 工作应用 (34)
- AS3收集 (140)
- WebBase (0)
- 开发构想 (4)
- 设计模式 (2)
- 框架和框架范例 (19)
- RED5 (3)
- java开发 (3)
- JAVA (1)
- FLASH-3D (23)
- 3D (6)
- 书籍 (10)
- 业界信息资料 (3)
- C# (1)
- JavaScript (12)
- HTML5 (6)
- Flixel (1)
- D5Power RPG网页游戏引擎 (0)
- ColorMatrixFilter - 获得相应颜色的色调 函数 (0)
- Starling (0)
最新评论
-
老顽童203:
字体
水果忍者鼠标跟随特效制作[转载] -
hairball00:
[转] 放出超多的Flash组件源代码 -
he74552775:
flash AS3 RegExp简单功能用法(转) -
hanshuai1232000:
第四点,有利也有弊,等你做了大型的aprg,你就知道了
[转]位图数据内存优化 -
yangfantao:
太感谢
[转] 放出超多的Flash组件源代码
一般我们谈到FLEX,首先想到的就是它的组件框架。然而,FLEX SDK与FLEX Builder其实两个不同的产品,一个是开源免费的,一个则不是。后者是前者的支持,但并不是只能作为前者的支持。
当建立AS project项目的时候,FLEX Builder只会使用FLASH的内置类库来进行编译,所以和通常意义的FLEX完全不同,而是区别于FLASH的另一种编译AS文件的手段。下面将会就如何将一个项目从使用FLASH CS3/4迁移至FLEX Builder做出说明。
一个具体项目,是由表现与逻辑两部分组成的。FLA内的图形元件是表现,而AS则是逻辑。所以我们首先的问题就是,如何将表现与逻辑联系在一起。
CS3/4的方法大家应该都很熟悉,就是绑定类。给元件取个类名,相应目录放上一个AS文件,就能将两者联系起来。而在FLEX中,实现这样的功能有两种方法:
1. Embed
FLEX AS project唯一比FLASH内多的内容,就是这样的元标签。
了解FLEX的应该对Embed非常熟悉,是主要的导入外部资源的方式。具体写法如下:
[Embed(source=”xxx.swf”,symbol=”symbol_name”)]
Public var imageClass:Class;
在之后的语句里,只要var newins:Sprite=new imageClass();addChild(newins);就可以将这个图形元件呈现出来。然而,每次都要建立一个Class的确有些麻烦。下面这种写法是FLEX文档没有涉及的,所以很多人都不知道,实际上可以这样写:
Package{
Import flash.display.Sprite;
[Embed(source=”xxx.swf”,symbol=”symbol_name”)]
Public class ImageClass extends Sprite{
Public function ImageClass():void{
//do something….
}
//the other functions ..
}
}
也就是说,我们在原来的AS文件CLASS前面添加一句[Embed],就可以将它和对应SWF文件内的一个元件联系起来。这样的做法和直接绑定类是一样的。诸如某个元件里还设置了几个实例,如果在CS3中没有勾选自动声明实例,我们需要在AS文件中手动声明实例一样,在FLEX Builder中我们也一样需要这样做,否则就会报错:
Package{
Import flash.display.Sprite;
[Embed(source=”xxx.swf”,symbol=”symbol_name”)]
Public class ImageClass extends Sprite{
//SWF中对应元件内已取名的实例
Public var ins1:Sprite;
Public var ins2:Sprite;
Public var ins3:Sprite;
Public function ImageClass():void{
//do something….
}
//the other functions ..
}
}
说白了,结果就是这样。把原来FLA文件生成SWF,然后在AS文件头上加上Embed来实现绑定,所得到的结果和原来直接绑定是一样的。只是由FLA主动寻找链接的AS文件编译,变成了AS文件寻找指定SWF内的元件一起编译。
当然,还是有一些不同的。这样导入的元件,其内部时间线上的AS会被完全忽略,stop()也不会被保留。而且,内部元件所有的类定义也都会被忽略,只保留类名。多帧元件会被认为是MovieClip,单帧元件会被认为是Sprite,按钮会被认为是SimpleButton,位图会被认为是BitmapData(不过你如果trace一下会看到转过来的其实是对应的asset类,反正是一样的我就不作说明了),不管你原来是否给了它其他的基类,或者绑定过类文件,那部分内容都不会过来。能过来的就是帧标签,舞台上设定的实例名,grid-9定义三种。类名定义也不会过来,你将它绑定到什么类上,它就叫什么类(当然必须要兼容)。
有些时候的确不方便。不过对于游戏来说,这应该是无所谓的吧?
这里有一个例外,如果直接[Embed(source=”xxx.swf”)],不写元件名,也是可以导入的。使用这种方法,类定义,AS都可以保留,就跟直接用loader载入一个外部SWF一样。但同样的,因为两者不在同一个应用域,是不能直接交互的。这样的方法我很少用,具体也不了解,但这样做体积会比较大一点(相当于内镶SWF的字节码),不是很推荐就是了。
2. SWC
发布设置里,勾上“生成SWC”,即可在生成SWF文件的同时生成一个对应的SWC文件。
将这个SWC文件拖到FLEX的lib目录中,建立的项目就可以直接导入它的所有类,当然也就包括所有元件了。
注意FLA写类名的时候请写好包名。否则进来的所有类全都是顶级类,不import都会被导入(带元件的类很大的――),而且非常容易产生命名冲突,毕竟这个不像第一种方法不导入类名,所以类名+包名一定要不同。
要给元件类定义, extends它就是了,FLA里的基类是什么它的基类就是什么。
Package{
Import swf1.Image1;
Public class ImageClass extends Image1{
Public function ImageClass():void{
//do something….
}
//the other functions ..
}
}
这种方法我比较少用,总觉得管理SWC文件很烦,能导进来的东西来多,感觉不如Embed单纯地导入表现好控制,而且想指哪个目录都可以,用SWC只能限定目录,需要copy来copy去,否则就要设N个lib路径。不过以后的项目我会考虑多使用SWC这样的形式,感觉这个才是主流。
两种方法,修改了swf/swc文件FLEX都不会知道的——,它会认为你没改,不进行重新编译。这时候选择它们所在目录执行刷新就可以了。或者对整个工程目录刷新,或者重启builder
好吧,现在我说优点。
1. FLA彻底和最终出来的SWF文件没有关系了。事实上,如果你只想用位图来当资源,FLA可以完全不用(Embed可以导入位图,SWC文件也可以用FLEX lib项目来生成)。从一开始就可以完全不考虑这个问题。美工做好了图,更新已有的SWF资源库或者建一个新的都可以,反正就是个图片,每个图一个FLA都无所谓。写AS的也不用和美工抢同一个FLA文件,不管编译测试任何情况都不用。美工要改了图,输出上载,我们更新下SVN,F11,自然就更新了,和其他写AS的配合也一样。一个元件可以被多个输出的SWF所使用――大家都互不干扰,所有过程都可以并行进行。
反正就是这样。搞这个的,应该明白这对开发效率的帮助有多大。
2. 我们可以用Flex Builder来写程序。虽然这个东西是比较大点,但不载入SDK框架,图形编辑界面一般机器都是可以承受的。虽然有FD,但其实还是不如Flex方便,毕竟体积不同。而且可以和java,PHP一起编译,调试――如果需要的话。
不要和VS这样的比,有得用就不错了。
3. 同样是我不想用SWC这种方式的原因。如果用Embed这样的方式的话,绝对不可能再出现找不着代码的情况,因为找不着的代码根本就导不进来——不需要再在这些方面浪费口水了。
应该很多人对我这样的说法有意见――一定要保留时间线代码的话,用SWC导入就是了,至少我们很清楚哪些可能出问题,哪些绝不可能。
4. 这东西就是个IDE,写的还是AS,除了编译环境,还有几个元标签和以前没啥区别,应该是人都可以很容易的转移过来的,安装也简单――
总之就是这样。
缺点嘛,我想到的是
1. AS project比较裸,除了flash包只能导入一些没啥用的包,FLEX,CS3的组件都不能用,所以我们“只能”求助于第三方类库,像aswing,TweenMax之类。
(但愿能明白我“只能”这个词意味的人能多点)
2. 不能方便,理所当然地在时间线上写代码(一点都不能写,除非找美工要FLA),可能也许会降低一点效率吧……
3. 布局方面还是受到一点限制的。不管怎么说,代码布局还是比拖拉的方式麻烦。用FLEX很多时候都得用代码来实现布局,因为无法对绑定了类的实例内部的实例再绑定类,因为方向不同了(这个比较难表达,用到了自然就明白了)。
目前,大部分公司还是不原意用FLEX来写游戏,这是个事实――
但形成这个事实的原因是复杂的,不能因为这个,就说“使用FLASH就是比FLEX好”,请大家仔细考虑下面的问题:
Adobe到底希望我们用什么来写代码?
为什么要给FLEX搞一个as project?
最后,附送一个联网升级游戏源码,做的比较早,代码比较烂就不要挖苦我了。看明白Embed怎么用就行了。
发布到IIS,tomcat之类的网络服务器,本地运行服务端SocketService.exe(C#写的需要运行库),编译根目录的两个as,然后使用teete.swf开始游戏。
发表评论
-
Flex数据绑定及其使用频繁的几种情况
2011-10-20 03:39 1402http://developer.51cto.com/art/ ... -
揭开Flex正则表达式的神秘面纱
2011-10-20 03:38 1176http://developer.51cto.com/art/ ... -
Flex模块化开发优势及技巧解析
2011-10-20 03:38 1702http://developer.51cto.com/art/ ... -
Flex模块化应用程序开发
2011-10-20 03:38 1127http://developer.51cto.com/art/ ... -
[转]Flex模块化的目的及其步骤
2011-10-20 03:35 1159http://developer.51cto.co ... -
翻译: Flash文本引擎, 第三部分: 布局
2011-10-20 02:36 0http://www.riade ... -
翻译: Flash文本引擎, 第二部分: 交互
2011-10-20 02:34 0http://www.riadev.com/flex-thre ... -
翻译: Flash文本引擎, 第一部分: 概述
2011-10-20 02:33 0http://www.riadev.com/flex-thre ... -
[转]flex操作XML,强力总结帖
2011-08-16 01:10 1009http://qiqishou.iteye.com ... -
[转]用ActionScript 开发高级可视化组件
2011-08-14 04:37 0用ActionScript 开发高级可视化组件 -
[转]AIR2.0 NativeProcess in Flash Builder 4.0
2011-08-07 23:37 1425AIR2.0 NativeProcess in Fla ... -
[转] Actionscript项目嵌入图片(设置九宫格缩放)
2011-07-27 02:04 2326我们知道在Flex项目中,嵌入外部图片,可以使用 [E ... -
[转]NumericStepper添加百分号
2011-07-26 23:32 1098请问 NumericStepper组件中添加百分号 ... -
[新闻资讯] [Flash/Flex] 走自己的路:重写AIR移动应用程序中的BACK按键
2011-06-15 13:44 1199http://bbs.9ria.com/viewthread. ... -
[转]关于Spark List控件和Spark DataGrid控件的提示
2011-06-02 05:23 1402http://bbs.9ria.com/viewthread. ... -
flex 3 能使用openwithDefaultApplication吗
2011-06-02 05:05 0最近用到了 使用air 来开启外部的程序。 我知道flash ... -
[Flex]Flex编程注意之Flex Complier参数
2011-05-19 19:56 1048http://fykyx521.iteye.com/blog/ ... -
Aarry和AarryCollection
2011-05-18 00:06 1188在AS3里面,数组里面可以存储字符串、数字、布尔值、或引用的类 ... -
[Flash/Flex] 给一个TitleWindow添加按钮的方法
2011-05-07 01:38 1663资讯类型: 翻译 来源页面: http://userflex. ... -
[转][Android] Android桌面应用程序-交通灯游戏源码
2011-04-25 02:46 0http://bbs.9ria.com/viewthread. ...
相关推荐
Flex教程系列之(一) AS3语法——编程基础 http://download.csdn.net/source/1161756 Flex教程系列之(二) AS3语法——流程控制语句 http://download.csdn.net/source/1161804 Flex教程系列之(三) AS3语法——控制...
Flex教程系列之(一) AS3语法——编程基础 http://download.csdn.net/source/1161756 Flex教程系列之(二) AS3语法——流程控制语句 http://download.csdn.net/source/1161804 Flex教程系列之(三) AS3语法——控制...
Flex游戏——水果乐园(含源码) 游戏介绍: * 通过键盘方向键控制小熊(游戏主人翁)在迷宫内行走,在指定时间内拾取所有水果就通过游戏否不通过。 * 每次拾取水果必须正确回答问题才能够真正获取水果。 * 游戏中有...
FLEX和Actionscript开发FLASH游戏的中文文档,内容和详细 希望对你有用~
NULL 博文链接:https://fykyx521.iteye.com/blog/403179
创建第一个Flex应用——编码模式创建第一个Flex应用——编码模式创建第一个Flex应用——编码模式
创建第一个Flex应用——设计模式创建第一个Flex应用——设计模式创建第一个Flex应用——设计模式
Flex/flash 无需服务器的P2P源码 实现NAT穿越
《精通Flex 3.0——基于ActionScript 3.0实现》一书源代码。 Flex 3.0 ActionScript 3.0源代码 Flex 3.0源代码。 --------------------------- 第1篇 Flex技术概述 第1章 Flex概述 3 1.1 Flex简介 3 1.2 Flex...
细细品味Flex——新Flex学习手册 技术齐全
很久之前无聊的时候用flex实现的一个BullBreaker小游戏,点击小球可消除周围同色小球,可以回滚操作至起始状态。swf格式的可以直接在视频播放器中打开来玩,也可以打开html文件在浏览器中玩(需要flash支持)。
博文链接:https://hacker47.iteye.com/blog/182262
flex / flash bulider 是stepbystep写的,感觉这个挺不错和大家一起分享。
FLEX——blazeDS原理.pdfFLEX——blazeDS原理.pdf
FLEX/FLASH ActionScript3 PPT讲义以及基于FLASH源码
使用FLEX 和 Actionscript开发FLASH 游戏(一)
携程在线首页。适合零基础入门的人使用的demo,对布局这块有不错的...采用的是flex布局使用了原生js实现的tab栏切换等。自己可以通过swiper插件或者TouchSlide插件以及bootstrap框架来替换!可以把这个demo进行更改。
Flash+Flex+Air 移动开发入门经典——适用于Android、iOS、BlackBerry系统
flex 开发的贪吃蛇游戏,包含详细注释。可选关,分数增加。