分类存档: 技术

Signals框架介绍(三)原生事件

注意:本文参考An introduction to AS3 Signals写成,但不是翻译,有增删改。


原生事件

为了达到替换AS3事件机制的目的,Signals当然包含了对AS3原生事件的支持。这依赖于NativeSignal类。

下面的范例演示了如何在Stage上添加单击事件。由于一看就懂,这里就不废话解释了。

[NativeSignalSample.as]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import org.osflash.signals.natives.NativeSignal;
 
[SWF(width=500,height=300,frameRate=30,backgroundColor=0xFFFFFF)]
/**
 * 测试原生事件
 * @author zrong(zengrong.net)
 */
public class NativeSignalSample extends Sprite 
{
    public function NativeSignalSample()
    {
        _click = new NativeSignal(this.stage, MouseEvent.CLICK, MouseEvent);
        _click.add(handler_click);
        //测试只发生一次的点击事件
        //_click.addOnce(handler_click);
    }
 
    private var _click:NativeSignal;
 
    private function handler_click($evt:MouseEvent):void
    {
        trace('currentTarget:',$evt.currentTarget);
        trace('target:',$evt.target);
    }
}
}

其它资料

Signals框架介绍(二)高级事件

注意:本文参考An introduction to AS3 Signals写成,但不是翻译,有增删改。


也许你现在又想起了AS3内置事件框架的好处,希望使用currentTarget?或者希望支持冒泡?OK,Signals也能满足你那多变的心……(貌似是我自己多变罢了ˇ^ˇ)

高级事件

使用DeluxeSignal可以实现更高级的事件传递。还是基于闹钟的例子进行修改,将原来AlarmClock中的Signal改为DeluxSignal: 继续阅读 »

PuTTYcyg的替代者FuTTY

我一直是使用PuTTYcyg作为Cygwin的终端程序的。因为Windows的Command命令行实在是难用的可以。

但是puTTYcyg已经有很长时间没有更新了,今天在它的网站发现这个:PuTTYcyg is looking for a new maintainer。看来作者也不准备再继续维护这个项目了。

与此同时,PuTTY标准版也开始支持作为Cygwin的终端使用,只是自己要编译一个cygtermd出来:PuTTY wish cygwin-terminal-window

由于我比较懒惰,不想去down PuTTY的源码来编译,就在google上搜索有没有编译好的cygtermd.exe。无意之中找到了FuTTY

这就是我理想中的Cygwin终端了!

与PuTTYcyg相比,好处如下:

  • 基于PuTTY 0.61源码编译;
  • 加入PuTTYcyg;
  • 加入PuTTY Tray,可以将界面最小化到任务栏中
  • 菜单中加入”Reconnect”和”Save Current Session”功能;
  • 支持在界面中单击url网址用浏览器打开;
  • 界面透明;
  • 远程控制命令复制到剪贴板。

Signals框架介绍(一)基本用法

注意:本文参考An introduction to AS3 Signals写成,但不是翻译,有增删改。


Signals是一个基于AS3的轻量级事件框架,它被设计用来代替AS3内置的Event框架。

为什么我们要放弃Event框架,改用Signals呢?原因主要有以下几点:

  1. 使用AS3内置的Event框架,必须继承EventDispatcher或者自行实现IEventDispatcher,而Signals使用组合,可以避免继承;
  2. 使用AS3内置框架在事件中实现值的传递,必须自定义事件类才可以。而Signals可以方便的实现多个强类型值的传递;
  3. Signals不使用字符串来区分不同的事件,而是使用实例;
  4. Signals的速度更快,据说是AS3内置事件机制的4倍。

来看个简单的例子吧,这个例子中的闹钟会叫我们起床。此范例部分源码来自An introduction to AS3 Signals
继续阅读 »

Flash Builder安装和卸载错误的解决办法

今天准备卸载Flash Builder 4.5.1,安装4.6,哪料到卸载出错,提示去Adobe网站下载Adobe Creative Suite Cleaner Tool进行卸载。

下载后,发现该工具是一个交互命令行工具,用来删除Adobe系列软件的注册信息。运行后,该工具只会卸载掉注册表或文件系统中的信息,不会删除Flash Builder安装目录。

卸载完成后安装Flash Builder 4.6,结果报错:“安装过程中安装程序遇到错误(-1)。请重新启动计算机,然后重试。”

再次使用Adobe Creative Suite Cleaner Tool删除所有能删除的软件信息,依然无效。

最后,删除了“C:\Program Files\Common Files\Adobe”下的所有文件夹,安装成功。

Android设备分辨率计算

面对Android设备那混乱的硬件体系,最淡定的开发者也会不免蛋疼起来。在做Android UI的时候,考虑最多的就是这些不同设备的适配问题。在为不同分辨率设计不同UI的时候,我们首先要知道目标设备的分辨率到底是多少。如何计算出来?

水果手机经常喜欢用分辨率超过人眼极限来标榜自己的设备有多么牛B,据说iPhone 4S的分辨率达到了326 PPI(pixel per inch),这个数值的计算公式为:

开方(屏幕宽度平方+屏幕高度平方)÷对角线尺寸

iPhone 4S,960×640像素,对角线尺寸3.5英寸,用上面的公式计算结果如下: 继续阅读 »

Flex编译器参数中-swf-version与-target-player之关系

今天下载了Flex 4.6 SDK后,发现framework/flex-config.xml中的默认-swf-version的值变成了14,而-target-player则变成了11.1。

记得在Flash Player 11发布的时候,为了能正常的编译面向Flash Player 11的swf文件,需要将-swf-version的值设置为13。以此推算,14这个值应该是针对Flash Player 11.1的。

那么-swf-version和-target-player的对应关系如何?见下表: 继续阅读 »

对RTMP视频流进行BitmapData.draw()出错的解决办法

source on github

在对Flash Media Server中的视频流使用BitmapData.draw()进行绘制的时候,会抛出这样异常:

cannot access rtmp://xxxxx. No policy files granted access.
at flash.display::BitmapData/draw()

这个错误出现的原因是,客户端(swf)没有权限复制NetStream中的原始视频数据。看提示,是需要一个策略文件。

但是,在FMS服务器上无法放置策略文件,FMS也不能像Socket服务器那样发送策略文件给客户端,这种情况应该怎么处理呢? 继续阅读 »

编辑Sprite Sheet的小工具:sprite sheet editor v0.6.2发布

2011-12-21:v0.6.2版发布

  1. 加入在SpriteSheet中增加帧的功能。帧只能增加到已有帧的末尾。
  2. 加入在打开SpriteSheet中增加SpriteSheet的功能。这样就可以实现多个SpriteSheet的合并。规则如下:
    • 所有帧会增加到当前Sheet的末尾;
    • 若label重名,则被导入Sheet中的label不导入,但依然会导入该lable的所有帧;
    • 若name重名,则被导入的Sheet中该name对应的重名帧不会被导入;
    • 若原始Sheet中包含name,但被导入Sheet中不含name,则会自动为被导入的Sheet中的所有帧命名。

更多的功能介绍以及软件下载,看这里

Apache不显示符号链接的处理办法

现在主要操作系统转到ArchLinux。在搭建了Apache后,DocumentRoot为/srv/http

我/srv/http下建立了一个符号链接docs,指向/home/zrong/docs

可是,无论怎样设置(FollowSymLinks当然是加了的),Apache就是不显示这个符号链接。

怀疑是权限问题,但docs的权限已经设置成了777。

查看apache的log,发现一条有用的信息:

Symbolic link not allowed or link target not accessible

看来确实是权限问题,仔细查看,我发现/home/zrong的权限是700。

为/home/zrong加上执行权限,一切正常:

chmod +x /home/zrong

另外,网上还有说此错误是由于SELinux对apache的影响。因为我没有装SELinux,因此排除。