2008年12月29日星期一

fp10新特性之p2p

示例在如下地址,根据示例,一个视频聊天程序就能轻松跑起来,
http://www.fmser.cn/post/35.html

adobe官方示例:
http://www.fmser.cn/post/36.html

display的inline和block和inline-block

IE下块元素实现 display:inline-block 的效果
有两种方法:
1、先使用 display:inline-block 属性触发块元素(触发layout),然后再定义 display:inline,让块元素呈递为内联对象(两个display 要先后放在两个 CSS 声明中才有效果,这是 IE 的一个经典 bug ,如果先定义了 display:inline-block,然后再将 display 设回 inline 或 block,layout 不会消失)。代码如下(…为省略的其他属性内容):
div {display:inline-block;}
div {display:inline;}
2、直接让块元素设置为内联对象呈递(设置属性 display:inline),然后触发块元素的 layout(如:zoom:1 等)。代码如下:
div {display:inline; zoom:1;}
(要求设置!DOCTYPE)


ff也不支持inline-block(ff3已经支持了),详细细节Google吧,这个问题也是比较常见了...

2008年12月28日星期日

IE常见bug

1,IE双倍浮动边界bug(经典)
2,IE6图片导致行高失效bug
3,IE文字重影bug(一般删除注释就好了,也有别的解决方案)
4,IE6 3px
5,IE6捉迷藏
6,IE6断头台

如何获取当前执行的方法名

(new Error()).getStackTrace().split("/")[1].split("(")[0]
总之(new Error()).getStackTrace().可以获得当前的调用堆栈,这个调用堆栈上的任何函数名我们都能得到...

文档说仅限于Debug版Player...
runtime版本网友说也可以...没测试

flash效率之一

今天晚上回来再天地会look了一下,发现有篇帖子讲Number,int,uint的效率问题,具体步骤就不说了,得出的结论是:int>Number>uint
郁闷了,看样子uint得少用了...
还有一个:
for循环Number数据类型++和+=1速度相当for循环int和uint数据类型+=1比++快很多...

2008年12月27日星期六

importNode

dom3增加了importNode方法,是可以用来导入其他document的node的。但是ie不支持(也许ie 7.0会支持)。

还没有测试,这样如果可以的话,不同页面之间就可以传dom对象了...

IE环境下cloneNode的一个bug

cloneNode是进行DOM操作经常使用的方法,有了它我们可以很容易的克隆一个跟原来一模一样的DOM对象,如:在动态增加table的行的时候,我们只需克隆一个table中现有的行,然后调用talbe.appendChild()方法就可以实现,而无需调用table繁琐的DOM操作方法。但是在开发中,我发现cloneNode在对select进行克隆时却无法克隆出当前选中的option,克隆出来的对象的options中拥有 selected属性的永远都是第一个

FireFox下运行正常

摘自http://www.blogger.com/post-create.g?blogID=9073149564871136556

2008年12月23日星期二

一个解析播放gif的类 GIFPlayer(actionscript3)

地址http://code.google.com/p/as3gif/

使用方法:
var myGIFPlayer:GIFPlayer = new GIFPlayer();
addChild ( myGIFPlayer );
myGIFPlayer.load ( new URLRequest ("http://somedomain.com/a.gif") );
myGIFPlayer.play();
myGIFPlayer.stop();
myGIFPlayer.gotoAndStop ( rand );

原理貌似用二进制加载进来进行一些处理(猜想是分成几张图片吧,没看源代码...)

sprite width height问题...

如下代码:
this.square = new Sprite();
this.square.width=78;
this.square.height=98;
this.square.graphics.beginFill(0xFF0000);
this.square.graphics.moveTo(400, 400);
this.square.graphics.drawCircle(200,200,200);
// this.square.graphics.drawRect(0, 0, 20, 400);
this.square.graphics.endFill();
trace([this.square.width,this.square.height,576]);
this.addChild(this.square);
空sprite是无法设置宽高的,如果子显示对象也为空,则也不能设置宽高,以此递归(空意思是没有需要渲染的图或者子对象)
当在sprite为空时设置this.square.width=78; this.square.height=98;
然后再graphics或者addChild,宽高就没了(其实是被设置成了0,0)...
严重怀疑是adobe的bug...

onbeforeunload事件

触发于:
   ·关闭浏览器窗口
   ·通过地址栏或收藏夹前往其他页面的时候
   ·点击返回,前进,刷新,主页其中一个的时候
   ·点击 一个前往其他页面的url连接的时候
    ·调用以下任意一个事件的时候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.
   ·当用window open打开一个页面,并把本页的window的名字传给要打开的页面的时候。
   ·重新赋予location.href的值的时候。
   ·通过input type=”submit”按钮提交一个具有指定action的表单的时候。
  可以用在以下元素:
   ·BODY, FRAMESET, window
  平台支持:
   IE4+/Win, Mozilla 1.7a+, Netscape 7.2+, Firefox0.9+

ie下有问题,锚点不会触发...
event.returnValue = "You will lose any unsaved content";最好用try catch包括起来,否则点取消会报错
触发于:
   ·关闭浏览器窗口
   ·通过地址栏或收藏夹前往其他页面的时候
   ·点击返回,前进,刷新,主页其中一个的时候
   ·点击 一个前往其他页面的url连接的时候
    ·调用以下任意一个事件的时候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.
   ·当用window open打开一个页面,并把本页的window的名字传给要打开的页面的时候。
   ·重新赋予location.href的值的时候。
   ·通过input type=”submit”按钮提交一个具有指定action的表单的时候。
  可以用在以下元素:
   ·BODY, FRAMESET, window
  平台支持:
   IE4+/Win, Mozilla 1.7a+, Netscape 7.2+, Firefox0.9+

2008年12月22日星期一

如何设置本地swf仅访问网络

(发现有代理的时候还是比较郁闷的...单独swf无法设置代理,只有跑在浏览器里才可以...)
1,输出设置里把local playback选项设置为access network only。 (我这么用老是不成功,不知为何...郁闷)
2,下载 Flash Local Content Updater ,来防止弹出安全对话框。
Local Content Updater 在以下地址下载
http://www.adobe.com/support/flashplayer/downloads.html
原理 当通过本地打开swf文件时,安全沙箱如下:
1,Remote (通过HTTP URL访问的SWF) 简单说就是放在网上的SWF(本地虚拟站点也算).安全机制与Flash Player 6相同(crossdomain.xml)
2,Local-with-filesystem 默认方式,可访问本地文件系统,但不能与网络通讯.也就是这种本地使用getURL()会看到安全提示对话框.
3,Local-with-networking 可以访问网络,但不能访问本地文件系统.可以载入同一目录下的SWF: a.loadMovie("b.swf");但不能这样:a.loadMovie("sub/b.swf");或a.loadMovie("c:\b.swf");(上两种可通过 Flash Local Content Updater 直接转换)
4,Local-trusted (通过Settings Manager指定过的本地SWF.这种权限最大.相当于Local-with-filesystem-with-network)
第4种的实现是通过网上的Settings Manager来设置来自macromedia的本地shared object来实现。 (所以第四种不依靠外部程序我们是无论如何无法实现的)
第二三种则是通过向swf文件中写入一个flash player所能识别的tag标签来设置是否允许本地访问或网络访问。(修改自身即可实现)

一个图象变形类(Skew)

可以进行梯度之类变换,有空研究一下...

2008年12月21日星期日

Event.ENTER_FRAME

没有添加到显示列表中时,Event.ENTER_FRAME执行一次,
添加到显示列表会一直执行

2008年12月20日星期六

Flash Catalyst

Flash Catalyst抽空研究一下

2008年12月19日星期五

sprite的键盘事件

keydown会持续触发,stage.focus可以设置sprite获得焦点(如果不设置的话用tab也可以切换过去(要使tabEnabled为true),鼠标点击不会使sprite得到焦点),focusRect设置获得焦点时是否有黄色矩形框,

测试sprite的键盘事件,发现好多按键都不响应,原来是在debug模式下,网上摘得:
当我们在 Flash 编辑环境下测试影片时,IDE会拦截用于控制 IDE 自身的键。Tab 键和所有功能键以及作为快捷菜单项的键,在测试影片时不会接收到。不过,我们可以在菜单中选择“控制” -> “禁用快捷键”,来解除限制。这样一来,测试的影片就像在浏览器中工作一样了。

2008年12月18日星期四

TextField代码设置字体问题

代码生成的TextField用代码只能设置英文字体

舞台拉出的TextField可以拿代码设置英文字体,
拿代码设置中文字体则必须要在属性面板选择一个中文字体,才可以设置

在测试的时候发现一件怪事,代码生成的TextField(假设为tf01)无法设置中文字体,但是如果有一个TextField(假设为tf02)是舞台拖出来的,设置一个TextFormat给tf01,中文字体不生效,同时设置给tf02,则tf01的中文字体生效!!!
代码如下:(其中tf02是舞台上拖出来的,并且设置了中文字体)
package{
import flash.text.TextField;
import flash.text.TextFormat;
import flash.display.Sprite;
public class Tf extends Sprite {
public var tf01:TextField=new TextField();
public var tff01:TextFormat=new TextFormat();
public var tff02:TextFormat=new TextFormat();
public function Tf() {
tf01.text="dwad中文";
tf01.width=500;
addChild(tf01);
tff01.font="华文彩云";
tff01.size=30;
tff01.color=0xFF0000;
tff02.font="华文琥珀";
tff02.size=40;
tff02.color=0xFF0000; //tf01.appendText("");
tf01.defaultTextFormat=tff02;
tf01.setTextFormat(tff02);
tf02.setTextFormat(tff02);
}
}
}



没经过很好的验证,大体是这样的,请指教...

2008年12月17日星期三

文档类和层

cs3初始化顺序为
Stage--舞台元件绑定类--文档类--主时间轴代码--元件时间轴代码
这样如果在时间轴的某一帧上添加元件就会覆盖文档类里面添加的元件(由于深度关系),所以要新建一层来使文档类添加的显示对象在这个最上层上,
但是发现一个问题,如果最上层没有元件的话,并不会添加上来,只有随便拖进来一个元件(或者绘线)才会使文档类将显示对象添加到最上层上,应该是这样的...(发现还和帧有关系,混乱中...)

也许是这样的,文档类添加的元件在最上层上,但是最上层是空层的话会无视掉,不知道是否这样,期待解答
中...

2008年12月14日星期日

推荐加密软件

SWF Encrypt 5.0

另外推荐一个反编译工具Sothink SWF Decompiler


这两个工具是同一个人写的...搞笑,矛与盾啊

2008年12月12日星期五

cs3缺少的组件

发现cs/4很多组件都没有了,比如Tree等等,可以自己实现,不过太麻烦了,好在有很多开源的组件可以使用,比如aswing,比如yahoo flash组件.............

flash10新功能之本的保存文件

转自英明神武伟大的L4CD君的博客http://l4cd.net/Blog/article.asp?id=89

测试了一下CS4中FileReference新增的save函数该函数
允许直接把swf中的文本/byteArray保存到客户端
..save () 方法 flash10
function save(data:*, defaultFileName:String = null):void
语言版本: ActionScript 3.0
运行时版本: Flash Player 10
打开一个对话框,允许用户将文件保存到本地文件系统。虽然 Flash Player 没有限制可上载、下载、加载或保存的文件的大小,但是播放器正式支持的文件大小最大为 100 MB。
save() 方法首先打开一个操作系统对话框,让用户输入文件名并在本地计算机上选择用于保存文件的位置。当用户选择了位置并确认保存操作时(例如通过单击“保存”),保存过程即会开始。侦听器接收事件来指示保存操作的进度、成功或失败。为了在调用 save() 后确定对话框和保存操作的状态,ActionScript 代码必须对 cancel、open、progress 和 complete 等事件进行侦听。

关键代码:
function save(defaultFileName:String = null):void {
var _fileRef:FileReference=new FileReference();//用于保存文件 var _encoder:IImageEncoder=new JPEGEncoder(80);//用于编码位图 var bitmapData:BitmapData=new BitmapData(bg.width,bg.height);
bitmapData.draw(bg);//得到位图
var ba:ByteArray=_encoder.encode(bitmapData
);
//编码成JPG图片,质量为80
_fileRef.save(ba, defaultFileName);//保存到磁盘,会出现个系统保存对话框。
ba.clear();}

2008年12月11日星期四

fp10新特性大全

fp10的新特征在如下网址可以看到,来源于7月在D2上的演讲稿



http://bbs.actionscript3.cn/viewthread.php?tid=16941&pid=147746&page=1&extra=page%3D1#pid147746

2008年12月10日星期三

getDefinitionByName 与自定义类

使用getDefinitionByName发现类是自定义的话出错,Google了一下,发现是这个原因:
因为缺乏运行时的动态源码编译。对于那些内建的类,比如:Sprite类来说无疑是有用的,但是对于自定义类来说,是不行的,因为没有编译进去
尽管我们使用了import语句,但是"getDefinitionByName()"还是会失败。原因上面已经说过了,在运行时编译源代码是不允许的。也许以后可以。在目前情况下,要实现上述功能,至少要在代码中初始化一个类的实例。也就是声明一个类的实例:
var customType : com.customtypes.string;

还发现另一个方法,不过这个方法经过俺的探索发现是不行的,
(转自http://sanbook.javaeye.com/blog/236564):
var typeName:String = classfullname ;
var packageName:String = typeName.split("::")[1];
var type:Class = Class(getDefinitionByName(typeName));
registerClassAlias(packageName, type);

2008年12月9日星期二

fp10新特性之vector

Flash Player 10之前,对于一个数组内的元素,我们是无法控制其类型的,也无法控制数组的长度,因为它可以自动增长,事实上,自动增长是会损失性能的,因为它需要动态分配内存地址。
FP10中增加了一个新的对象:Vector,解决了上述问题,这个东西看起来很像是泛型,不过as是没有泛型的...
性能强Array不少...

Google终于出手了

早上去蓝色理想转了一圈,看到这么条新闻,下面转载自七月博客.
Google是要与微软 Adobe为敌了,还有那个Java Fx...


Google于前天宣布一个项目称作“Native Client”,作用是允许开发人员编写Native Code (C/C++/...)的应用运行在多个平台的桌面和浏览器中。目前这个项目刚刚宣布,属于非常早期的一个项目,但是不难看出Google也希望统一 Web应用和桌面应用的想法。
这个项目已经可以在Google Code里看到:http://code.google.com/p/nativeclient/
其中有个Demo是将Quake port到native client插件中运行

推荐两个对displayObject进行旋转,缩放,变形的类

TransformTool是免费的
http://www.senocular.com/?id=1.373
TransformManager是收费的,299美刀
http://blog.greensock.com/transformmanageras3/

效果见这里http://blog.greensock.com/transformmanageras2/

动画类TweenLite或者TweenMax也不错


顺便看到一个很漂亮的pv3d树,这里http://www.cleoag.ru/labs/flex/parkseasons/

2008年12月8日星期一

as3特有的抽象类写法

转自天地会,as3的抽象类可是够麻烦的...以后语言内置就好了...抽象类写法很多种,这种也不错,无法实例化,却可以继承,特转

as3特有的抽象类写法

说是特有的是因为突然发现as3调用super()不一定是要第一句的

于是便有了这样的思路,(受singletion的启发).大家来批批看

class AbstractClassA
{
protected var _allowinstance:Boolean = false;
public function AbstractClassA()
{
if(!_allowInstance) throw new Error("abstract");
}
}
class ClassB extends AbstractClassA
{
public function ClassB()
{
_allowInstance = true;
super();
}
}

textField 中htmltext加载的swf无法响应事件的问题

用htmltext可以加载img等等,(加载的img如果是gif是只会播放第一幀的),也可以加载swf,
加载的这些东西无法响应事件,即使是swf!!!
在天地会上看到一种变通的方法:
textField 本身不是一个DisplayObjectContainer,所以一些DisplayObjectContainer的标准方法是无法 使用的。需要htmlText加载的内容响应鼠标的话,可以在上面做一个透明Sprite(画一个和内容等大的透明矩形作为hitArea),放在和内容 相同的位置来响应鼠标事件。

2008年12月7日星期日

scrollRect 与 Mask 差异

Mask 可以做任何形状的遮罩,scrollRect 只能用矩形

另外,还有一個特性是比较不为人知的
Mask 並不会影响到 DisplayObject 物件的 width, height, bounds 等尺寸属性
可是 scrollRect 会影响到 DisplayObject 物件的尺寸


并且设置完scrollRect 之后,需要设置一个延时,这样宽高才会生效,可能是一个bug吧...

原文在此,http://ticore.blogspot.com/2008/03/as-tip-scrollrect-vs-mask.html

关于scrollRect延时问题,见作者的另一篇博客:http://ticore.blogspot.com/2008/03/as-tip-force-displayobjectscrollrect.html
貌似原理是强制绘一个BitmapData使得重新渲染界面...

2008年12月6日星期六

as3的很牛的人脸控制

http://www.motionportrait.com/about/frndA250TS/frndA250TS.swf
http://cubo.cc/

flash player10新特征之控制鼠标样式

我们知道cs3中是不能控制鼠标样式的,只有buttonMode可以设置样式,flex中可以,要通过CursorManager来控制.
fp10新增鼠标样式控制Mouse.cursor
"auto","button","hand","ibeam"

2008年12月4日星期四

flash player10 新的安全策略

无法查看这则摘要。请 点击此处查看博文。

avm2垃圾回收

avm2没有java那样的gc()可以强制回收垃圾,在天地会上看到这个方法:使程序出错,强制垃圾回收,(并不是所有异常都会导致垃圾回收)
try{
new LocalConnection().connect(”foo”);
new LocalConnection().connect(”foo”);}
catch(error : Error){
}

as3的虚拟机AMV2本身就有bug。 loader进来的swf不能正常卸载,而且卸载loader后声音会继续播放。依然存在内存中。唯一的办法就是hack,强制垃圾回收器回收。(强制垃圾回收是否可以卸载掉声音,还没有测试过,如果可以确实是一个很好的办法.)
Flash Player10 beta2增加了一个公共方法。unloadAndStop一口气移除音乐、事件、计时器。期待。不过使用cs3的朋友们就没福消受了...

摘自http://www.jacob1970.cn/?p=15

getImageReference两种应用

1,swf跨域加载图片
先将图片载入TextField中,然后htmltext="img src="'路径'" id="'imgtest'">"
var c:DisplayObject = tf.getImageReference("imgtest");//这个c其实是个Loader
addChild(c);
即可

2,解决htmlText中图片载入出错的IOErrorEvent问题
如果TextField中有img标签,并且这个图片载入出错的话,那么就会有IOErrorEvent触发,如果你不去处理她,那么就会在运行时报错了
利用getImageReference获取TextField中img标签里的Loader引用,就可以监听所有事件并使其不报错了,大致代码如下所示:
var t:TextField = new TextField();
addChild(t);
t.htmlText =="img src="'路径'" id="'img'">"
var loaderoader = t.getImageReference("img") as Loader;
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, 处理函数1); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, 处理函数2);

2008年12月3日星期三

使用verticalGradientMatrix来垂直填充渐变色

graphics.beginGradientFill(....) 方法填充的颜色是左右渐变的,
画个矩形,然后填充的,比如:
this.graphics.beginGradientFill(.....);
this.graphics.drawRect(0,0,500,150);
this.graphics.endFill();

可以使用verticalGradientMatrix来垂直填充

2008年12月2日星期二

Cocomo

貌似是一个不错的东西,有空研究一下

小结PV3d2.0中3D模型的疑难杂症

转自 as3天地会


小结PV3d2.0中3D模型的疑难杂症

小结PV3d2.0中3D模型的疑难杂症关于这方面,个人有一些心得。我想如果大家遇到问题可能主要也是这几个方面:
1. 首先是模型
我想大家应该都知道AS3 Geom Class Exporter工具吧(用来把3ds Max里的模型导成AS的脚本工具),下载地址和使用方法见http://flashenabledblog.com/2007/07/31/as3-geom-class-exporter-for-3ds-max/
这里大家第一个可能遇到的问题就是自己辛辛苦苦做好的模型因为TVFace的原因无法导出,其中涉及到的主要原因是模型不具有TVFace属性
解决的方法是:
可以建立一个具有TVFace属性的模型,然后用它和你的模型进行布尔运算(复合对象里),得出的模型既具有你想要的形状又可以导出。
而在3ds Max里内置的所有基本模型(立方体、球体... ...)都包含TVFace属性!
另外一个问题也许是透视问题,导出的模型里外反了,如是这个问题:
则在3ds Max反转模型所有面的法向量后再导出,并使材质的doubleSided = true。
2. 其次是贴图
虽然说PaperVision3D 2.0已经有了各种光照还有阴影可以作为渲染,但对于CPU的损耗还是比较明显的(不知道Flash Player10出来后有没有人尝试过)。2D贴图仍然很重要。
也许你会觉得3ds Max里贴的图和PaperVision3D做好的SWF不一样。这时你要执行的操作为:
1)AS3 Geom Class Exporter的Swap face normal 选项要勾上(贴图信息)
2)选中模型后进入修改器UV坐标UVW展开,选中所有的面后,在右侧参数面板里点击编辑,弹出编辑UVW对话框,再在此对话框中的菜单贴图里选择展平贴图,继续弹出对话框用其默认数值属性,确定后。则可以分清原来乱七八糟的线面纹路。上方的选择下拉框里拾取纹理,选中位图后即可以通过移动线面来进行贴图。之后导出的贴图坐标和PV3D里是一一对应的。

至于图片的制作我就不再多说了,此外可以参考
http://www.rockonflash.com/blog/?p=30


最后,如果你愿意使用dae或ase,那也是OK的,希望这些东西对大家有帮助

Flex皮肤制作教程

FLEX3.0组件可以通过CSS来控制样式,这里的CSS和平时编写网页时所谈及的CSS是有区别的,可以说是为FLEX量身定制的样式表,借助ActionScript可以实现强大的显示效果,下面的示例中会有相关介绍。


在冰山的播客看到这篇不错的入门教程,文章太长,链接如下
转自:冰山的播客 http://xinsync.xju.edu.cn/index.php/archives/2241

fp10新特征之加载本地图片

今天在群里聊的时候,一位大师已经在用fp10了, 加载本地图片,然后裁剪,转成bytearray,urlloader上传,爽啊

步骤如下:
先用FileReference选择图片文件然后用fp10最新的FileReference.load()加载文件然后用loader加载..判断宽度....如果超出大小..就用draw等比缩小.再转成byteArray
再上传,要把处理图片这一步转到客户端来..这样可以减少大文件对服务器的负担..


不过依然是获取不到文件路径的....

2008年12月1日星期一

as3 eval

as3去掉了eval函数,使得无法动态执行一段代码,网上有老外牛人写了一个类似的eval的函数,叫D.eval,

华丽啊...
示例如下:
import r1.deval.D;
var six:int;
six = D.eval("4 + 2") as int;
six = D.evalToInt("var x=0; for(i=1;i<=3;++i)x+=i;return x");
six = D.evalToInt("a * b", {a:2, b:3});
six = D.evalToInt("f(5)", {f:function(x:int):int{return x+1}});
six = D.evalToInt("xml.@size*2", {xml:});
six = D.evalToInt('xml=; return xml.@size*2');

官网下载包中有个小问题,当你放在flex中时候会遇到Util命名冲突
原因是Util类有两个,一个是在src下--针对输入的待解析的脚本代码,还有一个是AS3 Eval Library中的com.hurlant.eval.Util是包中使用的

as3天地会中有兄弟修改过ok的,可以去as3天地会寻找,D.eval可以去Google搜索找到

关于模态和非模态的弹出框

关于模态和非模态的弹出框

最近在做一个网站项目,测试时发现一个弹出窗口中的移动动画非常卡(感觉只有10帧左右)。该窗口弹出后CPU占用率达到50%~70%。
经过排查,发现是这句:
代码:
var productWin:IFlexDisplayObject = PopUpManager.createPopUp( DisplayObject(Application.application) , productShow, false);
PopUpManager.bringToFront( productWin );
改成:
复制内容到剪贴板
代码:
var productWin:IFlexDisplayObject = PopUpManager.createPopUp( DisplayObject(Application.application) , productShow, true);
PopUpManager.bringToFront( productWin );
后问题解决~
CPU占用率在 25%~35% 之间~ 动画也变得顺畅~

不知道模态显示窗口是什么原理~
建议大家在动画效果比较多的时候少用模态的弹出窗口~

转载自天地会

addFrameScript问题

今天调试一个flash,关联了一个文档类,第一帧上也写了代码,谁知道老是报错,
1180: Call to a possibly undefined method addFrameScript.

仔细思考了一下才发现文档类继承了雪碧(sprite),往帧上加代码的时候自然就出错了...

scale9Grid用于位图

两种方法:
1,手动或者用BitmapData切成9块才能正常使用...

2,如果是fb的话这样:
[Embed(source="ee.gif",scaleGridTop="10",scaleGridBottom="90",scaleGridLeft="10",scaleGridRight="90")]private var abe:Class;


转载自天地会

2008年11月30日星期日

在Flex Builder中使用Flash Player 10

看到一篇文章,觉得有用,地址如下:
http://www.javaeye.com/news/2365

第一个aswing程序

在网上找了篇教程,照着做了第一个aswing程序,如果没有用flex的话,aswing的布局管理还是值得一用的,
1,下载http://code.google.com/p/aswing/downloads/list aswing包

2,使用fb的话讲swc引入,如果cs3的话讲classpath加入进去

3,写程序,ok


摘自aswing中文站:
更详细的内容见这里:http://cn.aswing.org/?p=12

感觉aswing有点swing的风格... 偏向应用程序,而flex偏向互联网应用程序...

第三届D2前端技术论坛 视频

http://www.tudou.com/playlist/id/4682255/

Adobe发布Flash文字布局框架

Adobe发布Flash文字布局框架

Flash 在文字排版方面得能力一直以来为人所诟病。虽然有一些第三方的类库可以满足一些布局上的需求,但是往往效果和效率都不是非常理想。然而,随着Flash Player 10对文字引擎得大幅加强及Adobe AIR 1.5得发布,Adobe也在Labs放出了第一款来自官方的文本布局框架。我相信当你看到网站上的Demo时,你的心情会和我一样激动。

Flash Text Layout Framework提供以下支持:

* 双向文本(右排),垂直文本和超过30种语言
* 支持多列文本
* 支持多个连接的容器之间的文本的选择和编辑
* 支持文字环绕图片
* 垂直文本,tate-chu-yoko(即在垂直文本中包含水平文本,例如垂直文本中的数字数字)
* 东亚文字的均匀对齐
* 丰富的字体控制,例如字距,大小写等
* 剪切,复制,粘贴,撤销采用标准的键盘和鼠标操作模式
* 丰富的API来控制文本内容,布局等


转载自http://www.byjog.com/blog/?p=34

flash网络安全沙箱问题

部分文章描述到 flashplayer 寻找crossdomain.xml的过程,说去843端口去询问,于是我决定自己验证下这个事情
flashplayer的确首先访问843端口,请求是,最后面加个"\0",其实也就是0x00.
接着,发现843无法连接,就往应用端口送了,我的tcpserver是9850,所以flashplayer连接到我的tcpserver第一个内容报就发

现在很明显了,解决办法必须自己实现一个tcp socket去应付flashplayer的安全检查,要么在port 843做,要么在应用端口做,当然我不希望在判断我私有协议的时候去检查这么一串东西。所以我还是用843做了。

所以要在843或者应用程序端口写入那个跨域文件


以上转载自AS3天地会

以下摘自网络

与特定端口号一起使用 xmlsocket 协议,您可以直接从 XMLSocket 服务器中检索策略文件,如以下示例所示:

 System.security.loadPolicyFile("xmlsocket://foo.com:414");

这会导致 Flash Player 试图从指定的主机和端口检索策略文件。不仅可以使用端口 1024 和更高端口,任何端口都可以使用。使用指定的端口建立连接后,Flash Player 立即传送 ,并以 null 字节结束。XMLSocket 服务器可以配置为通过同一端口提供策略文件和常规 XMLSocket 连接,在这种情况中,服务器在传送策略文件之前,应等待 。 服务器也可以设置成通过与标准连接相单独的端口提供策略文件,在这种情况下,服务器可以在专用策略文件端口上建立了连接之后立刻发送策略文件。服务器必须 发送一个空字节来终止策略文件,并可以随后关闭该连接;如果服务器不关闭该连接,则 Flash Player 在收到终止 null 字节后也会这样做。

由 XMLSocket 服务器提供的策略文件具有与其它策略文件相同的语法,只是它还必须指定授予访问权限的端口。如果策略文件来自低于 1024 的端口,则它可以对任何端口授予访问权限;如果策略文件来自 1024 或更高的端口,则它只能对其它 1024 端口和更高的端口授予访问权限。所允许的端口在 标签的 "to-ports" 属性中指定。允许使用单个端口号、端口范围和通配符。以下示例显示了一个 XMLSocket 策略文件:

       
从 旧的默认位置(端口 80 上的 HTTP 服务器中的 /crossdomain.xml)获取的策略文件将对所有 1024 端口和更高的端口隐式授予访问权限。不可能从 HTTP 服务器上的任何其它位置检索策略文件来授权 XMLSocket 操作,XMLSocket 策略文件的任何自定义位置必须位于 XMLSocket 服务器上