标签存档: as3

FLASH CacheManager

flash CacheManager

为了减少无谓的加载,所以游戏中做一个CacheManager是很有必要

思路:

/**
  * 缓存管理器 配合 loader使用
  *
  * 每次开始加载数据的时候
  * 判断缓存中是否存在文件,没有进行写入,有则直接获取本地数据进行加载。
  * 写入的时候判断是否已经设置无限的存储空间,无,提示设置。默认情况下,Flash Player 最多在本地永久保存 100K 的远程共享对象。
  * 版本更新问题,在每次打开flash的时候会有份数据更新列表(一份fileName数组即可),对旧版本的缓存文件进行删除,接下去就回去加载新的文件
  *
  */

 

Adobe开源框架

Cairngorm是adobe为flex工程师准备的mvc开源框架,据说与PureMVC一起号称flex届目前最好用的两个mvc框架。

http://opensource.adobe.com/wiki/display/cairngorm/Downloads

一个中文介绍

http://wangguorui89.javaeye.com/blog/430916

PIXELBLITZ AS3 GAME FRAMEWORK

http://www.emanueleferonato.com/2010/02/04/pixelblitz-as3-game-framework/

一个不错的游戏引擎,传统的游戏像素渲染方式。
demo截图

 

编写ui框架中

写一个可以通过css来方便控制ui的游戏ui框架

游戏制作时由于经常要更换皮肤,某个模块界面等等,相当麻烦

所以做一个能够方便自由更换皮肤的ui框架还是很有必要

制作中…

Adobe APIs

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/

一个不错的StyleManager

从asForm看到一个StyleManager,感觉还不错
主要是提取用swf打包后的skin style

素材打包成swf好处在于 内部进行DefineBitsJpeg3压缩,文件体积比较小,但因为继承MovieClip,不是很轻量
也可以“手动”修改让它继承Sprite。
用jsfl批处理命令的话,写到swf里都是继承MovieClip,我手动修改成Sprite后,复制那条命令,重播一次还是继承MovieClip,比较杯具。

如果把图片直接Embed进主swf,压缩就没前者来的大,文件体积相对也会大些。
所以有好有坏,根据实际情况取舍。

当然如果要用Embed嵌入方式的话,那就用不上了
下面是用动态载入的方式

使用方法很简单,就不介绍了~

package form.core
{
	import flash.display.DisplayObject;
	import flash.display.Loader;
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.IOErrorEvent;
	import flash.net.URLRequest;
	import flash.system.ApplicationDomain;

	import form.events.StyleEvent;

	public class StyleManager extends EventDispatcher
	{
		private var loader:Loader;
		private var appDomain:ApplicationDomain;

		private var _url:String;
		public function get url():String{return _url;}
		public function set url(value:String):void{_url = value;}

		public function loadStyleDeclarations(url:String = null):void
		{
			if(!url || url == "") url = this.url;
			if(!url || url == "") {throw new Error("No skin url found."); return;}
			loader.load(new URLRequest(url));
		}

		private function onLoadComplete(e:Event):void
		{
			appDomain = loader.contentLoaderInfo.applicationDomain;
			StyleManager.getInstance().dispatchEvent(new StyleEvent(StyleEvent.STYLE_COMPLETE));
		}

		private function onLoadError(e:Event):void
		{
			StyleManager.getInstance().dispatchEvent(new StyleEvent(StyleEvent.STYLE_ERROR));
		}

		public function getStyleDefinition(selector:String):DisplayObject
		{
			var s:Class;
			try
			{
				s = appDomain.getDefinition(selector) as Class;
			}
			catch(err:Error){trace(err.message);}
			if(s)
			{
				return new s as DisplayObject;
			}
			return null;
		}

		// Class Instance
		private static var instance:StyleManager;

		public function StyleManager(enforcer:SingletonEnforcer)
		{
			loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
			loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
		}

		public static function getInstance():StyleManager
		{
			if(StyleManager.instance == null)
			{
				StyleManager.instance = new StyleManager(new SingletonEnforcer());
			}
			return StyleManager.instance;
		}
	}
}
class SingletonEnforcer {}

ppzhu's blog 使用的缓存程序为 WP Super Cache