9月 292013
 

委托(delegate)定义:委托是指向一个方法的指针,通过制定一个委托名称,即可以通过委托来调用方法。调用一个委托时,“运行时”实际执行的事委托所引用的方法。可动态地更改一个委托引用的方法,使调用一个委托的代码都运行一个不同的方法。
委托怎么做:先声明委托,然后添加委托。委托不需要你去new它,自己会处理。添加委托用”+=”,删除委托用“-=”。这个有点像as3里边的”addEventListener”和“removeEventListener”。

声明委托,请使用关键字:delegate,请定义访问方式,返回类型,参数

public delegate void allPeopleSay ();
allPeopleSay += men.Say;
allPeopleSay += women.Say;

如何调用委托,和调用方法一样.

this.allPeopleSay();

事件的构成:由于事件设计的事随着委托使用的,所以使用事件的类型必须是一个委托。而且必须在声明前,附加event关键字作为前缀。事件的四部曲。

第一步:声明事件。

先定义一个委托,里边可以带参数。然后定义event。

public delegate void DisplayTime(string timeStr);
public event DisplayTime TimeTick;

第二步:注册事件。事件注册只需要将事件添加到实例的委托中。添加事件用 “+=”字符串。卸载事件用”-=”。

9月 262013
 

对于面对桌面的应用程序,没有自动更新功能是很郁闷的一个事情。自AIR1.5之后,开始有了API支持自动更新。在没有API支持之前,可以手动的间接地实现。不过,有了API支持后,自动更新已经变得很简单与方便。至少不需要自己去写组件。下边就描述下实现自动更新的步骤吧。
1.准备标识版本号,以及更新信息的XML文件。该文件放在你的服务器(虚拟空间)上。

Continue reading »

9月 262013
 

客户端如何与服务端之间建立连接上次已经说了。今天主要说说客户端如何与服务端通信的。简单的说就是用使用什么方法,怎么处理。
先说客户端呼叫服务端。如果不使用共享对象,客户端呼叫服务端,就一个方法:call。call方法里边,第一个参数是服务端的方法名字,第二个参数是Responder对象(可以为空,就不需要返回了),后边的参数是任意的。可以带数值类型,object,array都可以。如:

            var songName:String = "痛彻心扉";
            var obj:Object = {nickName:"vini",age:28};
            var arr:Array = [1985,10,24];
            nc.call("iWantSing",null,songName,obj,arr);

Continue reading »

9月 162013
 

差不多一年的时间没有碰FMS了,最近又弄了下。做一个拥有共享画板,在线语音,支持留言,四种权限控制的工具。如果再完善点,可以作为简单的视频会议工具了。其实,最想做的就是做一个有P2P的多人视频唱歌工具。
简单的说下重点,今天先说下怎么处理客户端多处登录的问题。就是这样一个场景。你先登录了一个账号,再登录该账号,会前边一个账号从服务器踢出,同时告诉客户端做相应的处理。

(1)。 先建立好通讯文件。定义一个Array对象,用来放登陆用户的用户名(不放也可以的)。写好函数:application.onAppStart丶application.onAppStop丶application.onConnect丶application.onDisconnect。
实现相同登陆提醒主要是每次登陆前判断该登陆用户名是否已经在服务器上了。具体代码如下,都已经写好了注释。
Continue reading »

9月 082013
 

昨天看了下window phone下有个播放器,有一个翻转效果。于是在网上找了下,用 TweenLite就可以简单的实现了。不过,有一点需要注意,翻转的中心点在哪里呢。如何去设置呢。这个翻转,中心点是要设置在中间位置才好看。于是,通过了一层转换就可以实现了下边贴出代码和demo。

请点击图片,以实现翻转:


Continue reading »

 Posted by at 下午11:21
9月 052013
 

在本地,xml,txt,SharedObject已经可以用了。不过多了解点总是好的。之前用过my sql。来看这个,就比较轻松点。
* AIR提供了一套完善的SQL API,核心类位于flash.data包中。其中常见的类如下:
* flash.data.SQLConnection: 创建数据库的连接,并提供控制数据库操作的多个方法。
* flash.data.SQLStatement: 用来执行SQL语句(对表的操作吧)。
* flash.data.SQLResult: 用来获取SQL语句执行的结果。
* 使用数据库流程:首先使用SQLConnection创建库连接,然后通过SQLStatement执行SQL语句,最后从SQLResult对象中获取结果。
* AIR对文件的操作有异步和同步两种方式,同样,对SQL数据库的操作也一样。当你SQLConnection打开数据库的方式确定同步或异步之后,就不能中途修改了。选择何种方式,自己权衡。
* 打开模式三种:SQLMode.CREATE: 读写模式。如果数据库文件不存在,会自动创建。SQLMode.READ:只读模式,只能读操作。SQLMode.UPDATE:读写模式。如果数据库文件不存在时,则不会自动创建数据库。

Continue reading »

 Posted by at 下午11:25  Tagged with:
9月 042013
 

air for ios的拍照和保存图片到相册功能,主要用到两个API:CameraUI 和 CameraRoll。前者是负责调用系统的相机拍照的,对其侦听 MediaEvent.COMPLETE 事件,会得到MediaPromise对象。这个对象还可以通过CameraRoll选择相册图片得到。得到这个后,通过loader,得到bitmap对象。然后调用CameraRoll,将其保存到相册里边。这里要说的不是这两个API。还是说些我知道的,大家也知道的吧。CameraRoll很二,浏览选择图片的时候,一次只能选择一张。而且CameraRoll浏览选择图片,得不到图片的路径。这两个API,方法和属性都很少。对于在手机上开发,还有个很判断,都习惯判断设备是否支持该操作。如:if(CameraUI.isSupported){}。最后说一点,相机拍照后,怎么将相片完美的显示到舞台呢。设备设置为自动感应重力方向,会旋转。无论怎么旋转,图片的宽度永远大于图片的宽度。就是bitmap的宽度高度是固定的了。而舞台的大小却在变化着。还有方向也在变化着。这就导致addChild舞台的时候,方向,位置,大小不一的问题。这里的源头是找不到手机的重力方向状态。比如是否是正竖着方向,是否是正横着方向,是否是反横着方向这些。估计有API知道这个。由于对ios开发还不熟悉,还在研究中。如果知道了这些也好控制图片的位置,大小,方向问题。

要洗澡澡睡觉觉了。在这之前,还是把代码贴出来。

Continue reading »

 Posted by at 下午11:59
9月 032013
 

对于flash,断点续传这个东东,有了AIR,才真正发挥了它的用武之地。具体怎么实现的呢,请看瑞研社区的文章,点击进入瑞研社区
在这里,稍微改了一点点。是AIR在ios上的断点续传。差别似乎不大。但是有一点,需要注意。通过File,我们很容易指向文档目录,临时存贮目录等。但是,我们一般都不是只放在指向的根目录。而是有它的内层目录。比如,指向文档目录下,temp目录下,怎么写呢。

    var fileName:String = "crazy.swf";
    file = File.documentsDirectory;
    file = file.resolvePath(file.nativePath + "/temp/" + fileName);

这里要注意File的属性nativePath和url。

要说的第二点,增加了对文件加载总进度的侦听。这一点,有个处理。如果文件很小,或文件已经加载完了。再点击加载的情况。
不说了,贴出源代码。然后洗澡澡,睡觉觉了。对于ios下,文件的操作方面还待研究,不比在win下。

Continue reading »

 Posted by at 上午12:02
9月 012013
 

在应用程序app.xml里边有两个节点。autoOrients和aspectRatio。如果想你的应用程序一直处于横屏的怎么处理呢。请将autoOrients节点值改为false,将aspectRatio的值改为landscape。默认情况下autoOrients的值为true,能随设备重力方向改变而改变,aspectRatio默认该节点没有打开,请打开。

    <autoOrients>false</autoOrients>
    <aspectRatio>landscape</aspectRatio>

有了这些,还是不能够的。加入用CameraRoll导入一张图片进来,旋转方向了。程序的方向还是会变的。还在摸索学习中,先记着。应该有事件可以侦听设备重力方向的改变,就像侦听Event.CLOSING一样,会有状态。这个时候,需要手动去控制调整吧。得尝试才行。

 Posted by at 下午7:52  Tagged with:
9月 012013
 

1.去下载 air 3.8 sdk
2.找到目录 C:\Program Files\Adobe\Adobe Flash Builder 4.7\eclipse\plugins\com.adobe.flash.compiler_4.7.0.349722 对win-xp情有独钟,没有换win7.主要是后边对应的目录,找到 AIRSDK 目录。可以先备份一个,然后清空AIRSDK目录里边的文件。
3.解压下载好的 air3.8 sdk,然后剪切到AIRSDK目录下就好了。
4.重启FLashbuilder。对于以前用air3.4的项目,会出错。请更改其app.xml里边第一行,将3.4改为3.8就ok了。

网站地图