分类: AS/Flex/AIR

使用SWFObject插入Flash在IE下导致stageWidth为0的解决方法

SWFObject

SWFObject是一个用于在HTML中方面插入Adobe Flash媒体资源(*.swf文件)的独立、敏捷的JavaScript模块。该模块中的JavaScript脚本能够自动检测PC、Mac机器上各种主流浏览器对Flash插件的支持情况。它使得插入Flash媒体资源尽量简捷、安全。而且它是非常符合搜索引擎优化的原则的。此外,它能够避免您的 HTML、XHTML中出现object、embed等非标准标签,从而符合更加标准。

SWFObject在IE下的BUG

如果Flash里绘制的对象的宽高是自适应Flash的宽高的,那么,使用SWFObject来插入Flash在IE会导致一个问题,当这个Flash被缓存后,也就是第二次访问该页面时,在该Swf文件被加载时,获取到的stage.stageWidth和stage.stageHeight为0,绘制的对象也就看不到了。

阅读全文 »

读书笔记:ActionScript3设计模式中的单件模式

单件模式用于限制类的实例化次数,使你在系统的任何位置都能访问到同一个实例;达到节省资源,管理方便的效果。

单件模式的应用

从一个XML文件加载程序的基本配置信息,只需要在Flash初始化的时候或者Air程序启动的时候执行一次即可,并且,在程序的整个运行阶段都只需要一个实例,并不需要建多个实例或者读取多次XML。
例如:用一个xml文件保存AIR应用程序配置信息,里面包含窗口起始位置,窗口的宽高。

<setting>
	<window x="100" y="100" width="300" height="400">
</setting>

单件模式的实现

package cn.foxling.test
{
	public class Setting
	{
		private static var _instance:Setting;

		public function Setting(enforcer:SingletionEnforcer)
		{
		}

		public static function getInstance():Setting
		{
			if (Setting._instance == null) Setting._instance = new Setting(new SingletionEnforcer());
			return Setting._instance;
		}

	}
}

class SingletionEnforcer {}

阅读全文 »

魔嘀新版本(更新1.1版本)

魔嘀Logo
经过一段时间的辛苦奋战,魔嘀终于发布1.0了,所有的代码全部重写,增加了一些常用的功能,并请@ZK设计了全新的UI,现在的魔嘀帅多了。
魔嘀下载页面:http://app.foxling.cn/modi/
但现在还有许多细节都需要优化,时间有限,只能一步一步地更新了~
如果发现了什么BUG,或有什么好的建议,在这里留言吧,不一定一一回复,但我都会整理记录起来的,并且在后面的版本里陆续实现,欢迎在嘀咕网跟随我,一起交流。
AIR应用的通病,内存消耗较大,所以,建议平时不用时最小化吧,最小化后内存占用会比较少,8M-12M左右,我也在不断地优化代码,寻找BUG,使魔嘀的内存占用量能维持在一个比较稳定的水平。

魔嘀新界面

版本更新

  • 1.0 (2009-04-10)

用Flash按钮解决跨浏览器使用剪贴板的复制功能

以前有一个比较完美解决网页上复制按钮的方法,是通过JS调用SWF文件,让SWF文件做为一个中介来完成复制的功能(请看跨浏览器使用剪贴板),但最Adobe 发布了 Flash Player 10,一切就变了~,这个版本的 Flash Player 引入了不少新的安全特性,其中包括了对于一些敏感操作需要用户介入的内容。

新的 Flash Player 10 中,需要上载或下载数据、操作系统剪贴板的操作等都需要用户参与,也就是说要实现类似的“复制”功能,必须要让用户点击指定的按钮或设置快捷键才可以解决。这也就意味着之前可以自动操作剪贴板的 Flash 脚本都已失效了。于是乎,开心网啊,校内啊,他们的复制按钮都失效啦,提示复制成功,粘贴后却还是之前的内容。

像Google相册、YouTube的链接都是点击选中,需要用户Ctrl+C自行复制的,这也是一种解决方案,好过开心网那种提示成功却没成功~~

既然操作剪贴板的功能需要用户参与,那还是有解决方案的,做一个Flash的按钮让用户点击复制~~~

阅读全文 »