November 18
在flash player 9中,加载外部1.swf 结束时抛出一“结束”事件,在舞台显示二个1.swf时不存在问题。
在flash player 10中,加载外部1.swf在结束时抛出一“结束”事件,在舞台显示二个1.swf时存在冲突问题。
在flash player 10中并不是马上死掉,时间不确定,总之挺快。
我的项目只在一种情况可能出现二个相同的外部SWF共同播放的情况,所以在这种情况我不侦听“结束”事件解决,这只是取巧的解决,真正解决这个问题我还没有什么思路,我感觉可以试着将外部SWF每使用一次的时候都加载一次,也许可以解决。
October 30
转:http://blog.5d.cn/
Adobe APIs
主要包含corelib, mappr, flickr, youtube及加密等类库.
http://labs.adobe.com/wiki/index.php/Actionscript_3:resources:apis:libraries
as3awss3lib
与 Amazon S3 交互的 Actionscript 3.0 类库
http://code.google.com/p/as3awss3lib/
as3soundeditorlib
声音编辑类库
http://code.google.com/p/as3soundeditorlib/
as3ds
为游戏开发者整理的 AS3 数据结构
http://code.google.com/p/as3ds/
mecheye-as3-libraries
一组Flash游戏开发的AS3类库。
http://code.google.com/p/mecheye-as3-libraries/
APE
Actionscript的模拟物理引擎API
http://www.cove.org/ape/
As3Crypto
用 AS3 实现的密码系统类库,支持的算法主要包括 RSA,AES,DES,3DES,MD2,MD5,SHA-1,SHA-224,SHA-256 等等
http://crypto.hurlant.com/
FZip
让 AS3 能够加载标准ZIP格式的数据,并能解压其中的文件。
http://codeazur.com.br/lab/fzip/
// 3D相关
ASCOLLADA
一个可以解析Collada文件格式的AS3类库,Collada 是一个开放原始码的专案,它可让3D资料以XML的型态储存,并让3D人员可以轻易携带和互换资料
http://code.google.com/p/ascollada/
Away3d
3D引擎
http://code.google.com/p/away3d/
Papervision3D
3D引擎
http://code.google.com/p/papervision3d/
// UI相关项目
uicomponents-as3
一个轻量级的 AS3 UI 组件库
http://code.google.com/p/uicomponents-as3/
Tweener
Full featured animation library
http://code.google.com/p/tweener/
asinmotion
AS3的一个动画类库,可以并行或线性的管理特效的运行.
http://code.google.com/p/asinmotion/
flest
RIA企业级的AS3应用程序开发框架, 应用了Controller, Factory, Command等多种设计模式, 并采用了高效、简洁、实用托管式设计特点。
http://code.google.com/p/flest/
// 第三方公司或工具的API
Yahoo AS3 APIs
http://developer.yahoo.com/flash/as3_api_libraries.html
facebook-as3
访问 Facebook 平台的 AS3 API
http://code.google.com/p/facebook-as3/
Salesforce Flex Toolkit
http://wiki.apexdevnet.com/index.php/Flex_Toolkit
Twitter AS3 API
http://twitter.com/blog/2006/10/twitter-api-for-flash-developers.html
XIFF
XMPP client library
http://svn.igniterealtime.org/svn/repos/xiff/branches/xiff_as3_flexlib_beta1/
September 01
[SWF(backgroundColor="0x000000",width="550",height="400",frameRate="12")]
1. 调出行数的显示:在代码编辑区左边框上点击右键,选中show line numbers即可;
2. 添加注释符:按Ctrl+Shift+C, 或选中要注释的代码后按Ctrl+Shift+C;
/* This is a code comment in ActionScript */
3.添加或者删除单行注释,按Ctrl+/,可进行单行注释;
//this is a code comment
4.OutLine视图:在source环境下,位于左下脚。快速OutLine视图可以用Ctrl+O调出;
5.调出帮助:选中标签,按Shift+F2。
6.按住ctrl键,鼠标移至相应代码上,单击即可跳转至该代码定义处。
7.鼠标移到相应代码上,出现该代码的提示。
8.删除行:按住Ctrl+d,如果没选中代码,可删除该行,如果选中几行,即删除选中的这几行。
9.设置编译时打开的浏览器:window—perferences—General—Web browser。
10.CTRL+ALT+↑ 向上复制一行,CTRL+ALT+↓ 向下复制一行。
11.Ctrl+鼠标拖曵选择的代码复制到目标位置,Ctrl+Alt+鼠标拖曵选择的代码剪切到目标位置。
转至 Flex深博资料站
12.ctrl+shift+d 添加注释说明
13.alt+/可以调出代码提示
14.ctrl+tab在打开的代码文件之间切换
April 22
如题!平时上网我喜欢用MYIE,MYIE的功能超级多,但唯一不好的地方就是容易假死!但还好了,比较接受呵!
MYIE工作时点TAB+~符号键,会隐藏起来,任务栏的图标也会隐藏起来。
在FLEX工作界面点TAB+CTRL,咦?好功能可以快速切换编辑文档,功能不错呵!
puremvc里看到接口被声明,实例化很是迷糊!
接口不能实例化,但接口的引用可以指向实现接口的对象。
接口不能被直接实例化,但可以声明它们的引用。
// Singleton instance
protected static var instance : IController;
/**
* <code>Controller</code> Singleton Factory method.
*
* @return the Singleton instance of <code>Controller</code>
*/
public static function getInstance() : IController
{
//这只是返回一个实例化的类的接口形式。
if ( instance == null ) instance = new Controller( );
return instance;
}
instance就是接口的声明引用.
还不太了解具体的用意!在看看!
April 21
原文地址: http://www.websector.de/blog/2007/12/25/10-tips-for-working-with-puremvc/
中文翻译:http://www.duzengqiang.com/blog/article.asp?id=674
Jesse Wardens
的一篇名为 “10 Tips For Working With Cairngorm”
的文章给了我写这篇 PureMVC
的10个小提示的灵感. 我已经用PureMVC六个月了,而且我现在很喜欢它(这已经是一个公开的秘密了).不过有言在先,下面的所有见解都只是基于我的个人经验而已.
-
用(Pure)MVC的思想去思考
我应该如何开始使用(Pure)MVC呢? 一句话:用(Pure)MVC的思想去思考! 从它的名字中就可以看出, PureMVC 是基于一般的 Model-View-Controller
元设计模式的.使用Facade-pattern
这种模式你不需要直接初始化一个核心行为(instantiate the core actors), 但是PureMVC中的每个Class都有它自己的定义很清楚的角色:
- Proxies = Model
- Mediator and its ViewComponents = View
- Commands = Controller
-
为View Components创建API
一个 View Component可能是一个标准的UI component (比如DataGrid) 或者自定义组件 (比如一个游戏世界) 或者其他的东西. 不要直接使用它的 public方法. 而是把改变它的状态或者行为(等允许被外部调用的各种方法属性)写成API.
PureMVC的一个有点就是可以与所使用的技术无关. 举个例子:我建了一个基于PureMVC的'Pure' Flash application ,没有用到Flex Framework. 而后,为了使用AIR里面的File System API这个Application被转成一个AIR application.这时只需将View Components转化为使用 Flex Framework即可, 其他的Mediators 或者任何PureMVC中的任何actors均不需改变 .
-
多个View Components共同使用一个Mediator
为了紧密协调多个View Components 仅使用一个Mediator. 换句话说: 不是所有的Views 都需要Mediator. 例如: 有一个ApplicationControlBar,其中包含一个TextInput ,一个Button 或者其他的组件. 然后为ApplicationControlBar 创建一个名为ApplicationControlBarMediator的 Mediator 并且把它指定给ApplicationControlBar中所包含的所有View Component.
-
让Events bubble up起来
如果你不想在一个Mediator中用多个View Components 又会怎样呢?为了处理多个 View Components的用户交互事件, 我们必须把View Component里面嵌套的所有组件的事件bubble up起来.
例如: 当你点击View Component 里面的任意Button都会触发Mediator监听的一个自定义事件. 所以Mediator并不需要知道这个Button是否存在或者任何一个这个 View Component的其他Child,它只需要知道这个事件已经被触发了就可以.
-
尽可能地的用Notifications通信
Notifications是PureMVC 里面的“Events” . 当Model, View and Controller 三者之间的通信是下面几种情况时应该尽可能地的使用这个Notifications :
(通信 from -> to)
- Mediator -> Proxy (via mapped Commands)
- Proxy -> Mediator
- Proxy -> Command
- Commands -> Mediator
即使可以从Mediator获得Proxy,也不要直接用Mediator来改变Proxy.应该是用一个mapped Command来发送Notification. 不通过使用Command (Controller)而用Mediator (View)来直接改变 Proxy (Model) 是一种非常糟糕的方法.
-
尽可能多的使用 Commands / MacroCommands
Commands在控制端做这些工作: Retrieving and interacting Proxies, 与Mediators通信或者执行其他Commands. 即使一个Command仅被用了一次或者只有两行代码也要尽可能多的使用它. 为了在你的Application中可以随时随地的再次执行一个Command ,仅需发送一个Notification.以后也可以很容易的用更复杂的actions来扩展这个 Command. 还有非常重要的一点就是你总是知道改变Proxy (Model)的actor是哪一个.
问题: 你也没有遇到过需要按照特定次序执行多个Command的情况呢? 使用MacroCommands可以顺序执行多个SubCommands (也就是 “简单” Commands) .
-
使用Remote Proxy来接收和发送服务端数据
在Application中的发送和接收数据的Proxies 叫做“Remote Proxies”. 它不是一种特殊的PureMVC Proxy, 只是一个基于Proxy的location,而这个Proxy是负责处理比如HTTPSerivice,RemoteObject或者其他服务端调用的Proxy.
例如: 为了调用服务器端一个负责登录用户的RemoteObject 而创建了一个叫做LoginProxy的Proxy. LoginProxy负责所有与服务器端通信的工作, 也就是接收和发送数据. 当你为LoginProcess改变服务器端执行操作时,你值需要改变Application中的一个locationt即可,即 LoginProxy.
-
去掉没有用到的Mediators
在某些情况下你不再使用一个Mediator和它的View Components. 你应该用facade.removeMediator(MyMediator.NAME)去掉这个Mediator同时用 destroy()来去掉包含所有listeners,timer,references的ViewComponent.以便更好的进行 垃圾回收
.
-
VO's (Value Objects)的魅力所在
当然在Model中存放数据的是Proxies. 而且View Components不需要知道Facade和这个PureMVC application的其他部分. 这就意味着View Component不会直接访问Model的数据.
为了避免在View Component中存放数据可以使用一个 名为Value Objects
(VO’s)的引用 . VO's并不是PureMVC里面的核心actor,它和Flex里面的Data Binding有点渊源,是一个可以在不打破规则的情况下改变Model的数据的非常强大的方法..
-
可以找到的课件
Cliff Hall
做个一个值得敬畏的工作: 不仅有非常好的文档 “Framework Overview
“, “Best Practices
” and a “Conceptual Diagram
“, 而且还有非常非常有用的 课件
. 自己去看看吧!
注:本文为原创翻译,如需转载请注明出处http://www.duzengqiang.com/blog/article.asp?id=674,谢谢
April 18
1. 白盒与黑盒框架
框架可分为白盒(White-Box)与黑盒(Black-Box)两种框架。
基于继承的框架被称为白盒框架。所谓白盒即具备可视性,被继承的父类的内部实现细节对子类而言都是可知的。利用白盒框架的应用开发者通过衍生子类或重写父类的成员方法来开发系统。子类的实现很大程度上依赖于父类的实现,这种依赖性限制了重用的灵活性和完全性。但解决这种局限性的方法可以是只继承抽象父类,因为抽象类基本上不提供具体的实现。白盒框架是一个程序骨架,而用户衍生出的子类是这个骨架上的附属品。
基于对象构件组装的框架就是黑盒框架。应用开发者通过整理、组装对象来获得系统的实现。用户只须了解构件的外部接口,无须了解内部的具体实现。另外,组装比继承更为灵活,它能动态地改变,继承只是一个静态编译时的概念。
在理想情况下,任何所需的功能都可通过组装已有的构件得到,事实上可获得的构件远远不能满足需求,有时通过继承获得新的构件比利用已有构件组装新构件更容易,因此白盒和黑盒将同时应用于系统的开发中。不过白盒框架趋向于向黑盒框架发展,黑盒框架也是系统开发希望达到的理想目标。
2. 热点、食谱以及好莱坞原则
成功的框架开发需要确定领域专用的“热点” (Hot spot)。应用开发者在框架的基础上进行开发,只须扩展框架的某些部分,“热点”就是在应用领域的一种扩展槽,开发者根据自己的需要填充这些扩展槽。“热点”使框架具有灵活性,如在具体的实现中,扩展槽可以被看成是一些抽象类,开发者通过重写抽象方法获得具体实现。
“食谱” (Cookbook)就是描述如何使用框架方法的文档。在“食谱”中包含了许多“烹饪”方法,这些“烹饪”方法相当于一些具体的操作步骤,描述了为解决某一专门问题如何使用框架的详细方法。框架的内部设计和实现细节通常不出现在“食谱”中。
框架的一个重要特征就是用户定义的方法经常被框架自身调用,而不是从用户的应用代码中调用。这种机制常称为“好莱坞原则”(Hollywood Principle)或“别调用我们,我们会调用您”。
April 14
FlashDevelop轻便好用,如果经常使用FLASH IDE的朋友,用用它也不错!
乱码问题,可以这样解决:
新建的文件,直接使用UTF-8就不会有问题,
如果在编辑非FlashDevelop创建的文件怎么办,先ctrl+a全选,复制,然后改变编码方式为:UTF-8,这时会出现乱码,然后在ctrl+a删除,粘贴一下就OK了!
April 11
CursorManager 类控制一个光标优先顺序列表, 在其中具有最高优先级的光标当前是可见的。 如果光标列表包含具有相同优先级的多个光标, 则光标管理器会显示最近创建的光标。
Flex 定义了一个默认的忙光标, 可用来指示应用程序正在处理, 且在应用程序对用户输入作出响应之前, 用户应等待, 直到处理完成。 默认的忙光标是一个动画时钟。
可以使用以下几种方式来控制忙光标:
- 可以使用 CursorManager 方法来设置和删除忙光标。
- 可以使用 SWFLoader、WebService、HttpService 和 RemoteObject 类的
showBusyCursor 属性自动显示忙光标。
[showBusyCursor属性showBusyCursor:Boolean [read-write]
public function set showBusyCursor(value:Boolean):void
The default value is false.]
下面的示例使用 CursorManager 类的静态 setBusyCursor() 和 removeBusyCursor() 方法, 根据切换按钮的状态显示和隐藏默认的 Flex 忙光标。
教程链接