刻录时光

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

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

2009年十月24日

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

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

2009年六月2日

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

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

2009年五月31日

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

让人发指的 wmode=transparent

2009年五月19日

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

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

2009年三月30日

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

涂鸦 UI 组件基本完成

2009年三月30日

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

overState.cacheAsBitmap 的问题

2009年三月22日

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

Flash CS4

2008年九月25日

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

在线 GIF 动画创作 RIA

2007年十一月11日

忙碌了三个月的项目,其中有一部分是 AS3 写的在线创作 GIF 动画的 RIA。点这里体验 | 截图

不规则形状的 Bitmap Mask

2007年九月16日

最近做的项目中有需要动态创建不规则图形 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;

归档