2009年十月24日
我的博客中至少记录了2篇关于设置 wmode 后 Firefox 中 flash 有问题的文章,这次又发现了一个,当页面长度超过1屏,点击 flash 区域让 flash 获得焦点,然后滚动页面,如果不再次点击 flash 区域,按钮的 mouseOver 事件就不响应,去掉 wmode 后就没问题了,并且用 swfobject2.2 嵌入 flash 后也没有 flash 边缘恼人的虚线了。所以如果没有必绝对不要用 wmode。
2009年六月2日
Flash(AS3)中在接收键盘响应时如果输入法是中文,所有 keyCode 都等于 229,解决办法就是将 IME.enabled 设为 false 或者 IME.conversionMode 设为 IMEConversionMode.ALPHANUMERIC_HALF
2009年五月19日
今天在 Flash 里 call js 中加入收藏的功能,js 函数包括针对 IE 的 window.external.AddFavorite() 方法,点击测试死活没反应,可是 alert() 却能蹦出来,郁闷了半小时发现去掉 wmode=transparent 就可以了,wmode 这个参数从 Macromedia 时代就是一个让人又爱又恨的功能,wmode=transparent 的陷阱至少在 IE 和 FF 中都遇到过,不小心进去半天都出不来。
2009年三月30日
flash 在 Firefox 中如果 wmode 设置为 opaque 或者 transparent 后 TextField 的 SCROLL 事件不响应,其它 mouseWheel 事件也应该不能用,FP for Firefox 的 bug。
2009年三月30日
涂鸦板中用到的 Button、ToolTip、CheckBox、Label、Slider、ScrollView、TextInput、TextArea、Alert、ColorMixer 已经完成,是在 sdevil 组件基础上改进而来的,精简优化了代码,功能和交互上有些变动,可以在时间轴中布局,虽然比 CS3 组件的用法原始很多,另外还可以在纯 AS3 项目中使用,比如 FDT 和 FlexBuilder 中用 FCSH 编译,外部创建的 skin 在编译时 Embed 到 SWF 中去。
2009年三月22日
SimpleButton 的 overState 设置了滤镜效果后鼠标移到 button 上然后改变舞台大小,鼠标再回到 button 上就不显示 overState 了,实际上只要是 overState 的 cacheAsBitmap=true 都有这个问题,可能是 FP 的 BUG,暂时不知道如何解决,先记录下来。
2008年九月25日
啥也不说,“来路不明”的图片一张。工作区域更大了,很喜欢。
2007年十一月11日
忙碌了三个月的项目,其中有一部分是 AS3 写的在线创作 GIF 动画的 RIA。点这里体验 | 截图
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;