刻录时光

时光飞逝,莫让网络蹉跎了岁月

设置 wmode 后 Firefox 中有时按钮失灵

2009/10/24 01:56

我的博客中至少记录了2篇关于设置 wmode 后 Firefox 中 flash 有问题的文章,这次又发现了一个,当页面长度超过1屏,点击 flash 区域让 flash 获得焦点,然后滚动页面,如果不再次点击 flash 区域,按钮的 mouseOver 事件就不响应,去掉 wmode 后就没问题了,并且用 swfobject2.2 嵌入 flash 后也没有 flash 边缘恼人的虚线了。所以如果没有必绝对不要用 wmode。

中文输入法下 keyCode 始终等于 229

2009/06/02 03:36

Flash(AS3)中在接收键盘响应时如果输入法是中文,所有 keyCode 都等于 229,解决办法就是将 IME.enabled 设为 false 或者 IME.conversionMode 设为 IMEConversionMode.ALPHANUMERIC_HALF

FULL_SCREEN 事件时同时“按下”空格键

2009/05/31 05:41

Flash Player 跨浏览的 BUG,AS3 触发 FULL_SCREEN 事件后同时帮我按下了空格键!网上找到一篇文章也是描述这个问题 http://blog.circlecube.com/2009/03/tutorial/as3-firefox-bug-enter-fullscreen-broadcasts-keyboard-events/

让人发指的 wmode=transparent

2009/05/19 05:01

今天在 Flash 里 call js 中加入收藏的功能,js 函数包括针对 IE 的 window.external.AddFavorite() 方法,点击测试死活没反应,可是 alert() 却能蹦出来,郁闷了半小时发现去掉 wmode=transparent 就可以了,wmode 这个参数从 Macromedia 时代就是一个让人又爱又恨的功能,wmode=transparent 的陷阱至少在 IE 和 FF 中都遇到过,不小心进去半天都出不来。

设置 wmode 后 Firefox 中鼠标滚轮失效

2009/03/30 15:28

flash 在 Firefox 中如果 wmode 设置为 opaque 或者 transparent 后 TextField 的 SCROLL 事件不响应,其它 mouseWheel 事件也应该不能用,FP for Firefox 的 bug。

涂鸦 UI 组件基本完成

2009/03/30 10:11

涂鸦板中用到的 Button、ToolTip、CheckBox、Label、Slider、ScrollView、TextInput、TextArea、Alert、ColorMixer 已经完成,是在 sdevil 组件基础上改进而来的,精简优化了代码,功能和交互上有些变动,可以在时间轴中布局,虽然比 CS3 组件的用法原始很多,另外还可以在纯 AS3 项目中使用,比如 FDT 和 FlexBuilder 中用 FCSH 编译,外部创建的 skin 在编译时 Embed 到 SWF 中去。

overState.cacheAsBitmap 的问题

2009/03/22 14:11

SimpleButton 的 overState 设置了滤镜效果后鼠标移到 button 上然后改变舞台大小,鼠标再回到 button 上就不显示 overState 了,实际上只要是 overState 的 cacheAsBitmap=true 都有这个问题,可能是 FP 的 BUG,暂时不知道如何解决,先记录下来。

Flash CS4

2008/09/25 02:47

啥也不说,“来路不明”的图片一张。工作区域更大了,很喜欢。

不规则形状的 Bitmap Mask

2007/09/16 02:40

最近做的项目中有需要动态创建不规则图形 Mask,绘制的矢量图形 Mask 会占用大量 CPU 资源。以前以为用位图做 Mask 只能是矩形的,昨天发现把 Mask 和被 Mask 图形的 cacheAsBitmap 属性设置 true 就可以了,前提是遮罩和被遮罩的物件都是 Sprite 或者 MovieClip,不能直接用 Bitmap。下面是 AS3 的例子,AS2 同样支持。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;
import flash.geom.Point;
import flash.geom.Rectangle;
 
var bmd:BitmapData = new BitmapData(200, 200, true, 0xFFFF0000);
var bmdMask:BitmapData = new BitmapData(200, 200, true);
var seed:int = int(Math.random() * int.MAX_VALUE);
var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE;
bmdMask.perlinNoise(100, 80, 12, seed, false, true, channels, false, null);
var bitmap:Bitmap = new Bitmap(bmd);
var bitmapMask:Bitmap = new Bitmap(bmdMask);
addChild(bitmap);
addChild(bitmapMask);
var threshold:uint = 0×00800000;
var color:uint = 0×00FFFFFF;
var maskColor:uint = 0×00FF0000;
bmdMask.threshold(bmdMask, bmdMask.rect, new Point(), ">", threshold, color, maskColor, true);
var spriteMask = new Sprite();
spriteMask.addChild(bitmapMask);
spriteMask.cacheAsBitmap = true;
this.addChild(spriteMask);
 
var display = new Sprite();
display.addChild(bitmap);
display.cacheAsBitmap = true;
addChild(display);
display.mask = spriteMask;

Server-side GIF 转 SWF

2007/08/01 10:14

最近在做的项目需要在服务器端将 GIF 动画转换成 SWF,服务器端程序是 PHP,思路有两个:
1. 使用 Swftools 的 GIF2SWF 进行转换。优点:command-line方式简单、速度快;缺点:目前版本的 GIF2SWF 对于某些类型的 GIF 动画转换不准确,有帧重叠和色彩丢失的问题,并且不能设置导出的 SWF 版本。
2. 使用服务器端 GIF 动画解析器先进行分割,比如:Gifsicle(Gifsicle 网站上的命令有问题,导出单帧图片应该这样 % gifsicle anim.gif #0 > firstframe.gif)、ImageMagick(MagickWand)或者 PHP GIFDecoder,然后再用 PHP Ming 生成 SWF。优点:可以提取 GIF 的单帧图片;缺点:GIF 类型很多,需要先进行类型判断,再根据不同类型进行处理,过程很麻烦,再加上 Decoder 问题多多,拆解的单帧图片会有各种问题。

两种方法都试了,最后放弃第二种,因为 Swftools 是开源的,所以决定修改 GIF2SWF 代码来解决,在 Linux 下编译 Swftools 代码很方便,只用了半天时间就解决了上面的问题,通过简单的设置后竟然可以支持导出 SWF9!这样 AS3 就可以和载入的 SWF 交互了。

归档