AS3中实现多样化的A标签

2013年3月26日 没有评论

首先说下想要实现的效果。在htmlText里有多个A标签,想要鼠标滑到不同的标签时,显示不同的颜色.很明显的使用html+css( styleSheel)比较方便。OK,既然是html+css,一开始我还觉得很是简单,因为AS3支持部分css的,但是当我真正去实现的时候才明白.好多事情并不是那么的想当然。 阅读全文...

标签: , ,

重写NumberText为NumTextField

2012年7月4日 11 条评论

以前写过一个数值文本NumberText,也就是只允许输入数值,而其他文本不允许被输入.NumberText当时是根据判断键盘事件来控制输入的,感觉有点傻,后来知道了TextField本身就有属性来限制输入的字符,就一直想重写下这个数值文本.今天终于有空重新写了个新的数值文本:NumTextField.
阅读全文...

标签: ,

Graphics.copyFrom 复制显示对象

2011年12月5日 2 条评论

Graphics.copyFrom 这个API是从flash player10开始有的,以前我们要复制一个显示对象,那是不可以的,当然你可以说用 BitmapData.draw 这个方法,但是原本是矢量对象,被draw之后就变成了位图.这样不是很好的.flashplayer10刚出来的时候有关注过一些新特性,但是对这个没有这么在意.
阅读全文...

AS3的类型转换

2011年9月12日 没有评论

都说C/C++的类型转换个很头疼的问题。我说AS3的类型转换也简单不了多少(后者相比前者肯定简单些,呵呵)。

何为类型转换

当操作数的类型不同时,需要将一种类型转换为另一种类型,这就是类型转换。

类型转换分为显示类型转换隐式类型转换两种。
阅读全文...

flash本机鼠标指针NativeMouse

2011年4月3日 1 条评论

Flash Player 10.2添加了内置的本机鼠标指针(native mouse cursor)支持,虽然在之前的版本里我们可以侦听MouseEvent事件来模拟鼠标指针,但是在有了原生的本机鼠标指针后,我们可以舍弃旧的方式,迎接更友好,更方便的鼠标指针了.

下面对比下模拟鼠标指针和本机鼠标指针.

模拟鼠标指针:

  • 鼠标指针不能拖到舞台外部.
  • 使用MouseEvent事件,效率低下.
  • 使用方式麻烦.

本机鼠标指针:

  • 鼠标指针可拖到舞台外部.
  • 原生支持效率高.
  • 直接用Mouse类,很方便.

新的本机鼠标的一些能力及限制:

  • 必须使用BitmapData为鼠标指针的可视对象.
  • 鼠标指针尺寸不能超过32*32.
  • 可以使用多个BitamapData来播放动画.
  • 可以自定义动画播放的帧频,与当前SWF的帧频无关.
  • 可以鼠标自定义鼠标指针的热点,而不总是在(0,0)位置.
  • 要在舞台外显示本机鼠标指针,必须按下鼠标左键拖到舞台外面才行.

下面看一个本机鼠标指针的示例:

阅读全文...

Compile your AS3 projects with Ant + Flex SDK (all Open Source)

2010年8月8日 1 条评论

英文原文:http://www.blog.elimak.com/2009/07/tutorial/

本文将讲述: 怎样安装Ant应用Ant编译你的AS3项目. 与此安装工作将允许你对你的代码编辑工作独立。 然后你可以用任意编辑器打开项目并编译,而不用Flash IDE 或者 Flex. 阅读全文...

标签: , ,

ProgressivePlusLoader 渐进式加载图像 更新

2010年8月5日 13 条评论
这是渐进式加载图片的升级版demo,如果你看不到这个flash,请到文章页面查看!

阅读全文...

弱引用 addEventListener

2010年6月27日 5 条评论

之前只是知道尽量用强引用,不要用弱引用,因为弱引用会被垃圾回收. 对于flash.utils.Dictionary倒是没有什么疑问.但EventDispatcher.addEventListener就不明白具体是侦听器被回收了,还是侦听者被回收了。
昨天有看了一些文章,又想起这个问题,就想要理解透彻,于是又仔细看了下API文档.

Class-level member functions are not subject to garbage collection, so you can set useWeakReference to true for class-level member functions without subjecting them to garbage collection. If you set useWeakReference to true for a listener that is a nested inner function, the function will be garbge-collected and no longer persistent. If you create references to the inner function (save it in another variable) then it is not garbage-collected and stays persistent.

原来这里的弱引用是对侦听器的(侦听器函数),跟侦听者没有关系. 为了验证这个观点,我做了个小Demo。
OK,让我们来一边享受引用,一边学习吧。
阅读全文...

URLLoader 404 Error 与 complete事件

2010年3月31日 6 条评论

最开始发现是在AS2里用MovieClipLoader加载图片,那次地址写错了,但是依然有onLoadComplete事件触发。
请看下面的代码:

var mc:MovieClip = _root.createEmptyMovieClip("mc", 1);
var loader:MovieClipLoader = new MovieClipLoader();
var listener:Object = {};
loader.addListener(listener);

// 加载一个错误的图片地址,但只要有数据返回就会触发complete事件
loader.loadClip("http://www.litefeel.com/errorJpg.jpg", mc);

listener.onLoadComplete = function(target:MovieClip):Void
{
    trace("this is loadComplete!");
}

OK,上面明明是一个错误的图片地址,竟然会触发onLoadComplete事件。
然后用浏览器打开这个错误的地址看了下,是一个404Error页面。又换了好多个地址,不同域名的,可是依然会触发onLoadComplete事件。
所以猜想可能是只要有数据返回就会触发onLoadComplete事件吧(onLoadInit也是一样)。
测试LoadVars后更加断定我的猜想,请看代码:

var loader:LoadVars = new LoadVars();
loader.onLoad = function (success:Boolean):Void
{
    trace("success = " + success);
    trace(loader);
}
// 请更改为非跨域的不存在的地址
loader.load("http://www.litefeel.com/fdsafdsa");

我想这可能是AS2的一个bug吧,不知道AS3里解决了没有。
测试后发现Loader不存在这样的问题了,但是URLLoader,URLStream依然会触发Event.COMPLETE事件。
或许这不是bug,可能Adobe设计的时候就是complete为数据接收完毕,不论是404页面还是原本的地址。
那么我怎么才能知道是我原本想请求的数据还是一个404呢。
可能在HTTPStatusEvent.HTTP_STATUS 这个事件里会给让我区分吧。
测试发现明明由一个不存在地址跳转到404页面,但flashplayer收到的httpStatusCode竟然是200,就是说flashplayer认为这不是错误的请求,是正常的。
请看这个demo:
输入一个随便输入一个网址,如果有跨域请更换地址,再看httpStatusCode和返回的data。
在Event.COMPLETE事件里获取到data数据的。

这是一个urlloader对404错误的测试demo,如果你看不到这个flash,请到文章页面查看!

结果表明:Event.COMPLETE事件在完整数据返回后触发,而不管是404页面还是其他。
存在的问题:没有办法区别是否404页面。
再看官方帮助上对HTTPStatusEvent.HTTP_STATUS的解释。

Dispatched if a call to URLLoader.load() attempts to access data over HTTP. For content running in Flash Player, this event is only dispatched if the current Flash Player environment is able to detect and return the status code for the request. (Some browser environments may not be able to provide this information.) Note that the httpStatus event (if any) is sent before (and in addition to) any complete or error event.

OK,某些浏览器可能不能获取httpStatusCode,但是这个却返回了httpStatusCode:200。

感谢 12345 的回复.原来我之前博客的404页面是直接跳转,但是没有将状态码变成404,返回的依然是正常的状态码200,所以flashplayer认为这是一个正常的页面,而不是404,现在将状态码改成404了,这样flashplayer就返回IOError了,现在一切正常了

本例demo下载☞

标签: , , , ,

AS2的异常Error

2010年3月28日 2 条评论

前几天在调试一个AS2跟后台通信的程序,一直看不到正常的数据显示,然后就挨行trace,终于发现问题所在了.
原来是用了AS2的一个JSON类,如果格式不是json格式就会抛出异常,因为我们的数据格式不会错的,要么就没有数据,否则不会出现格式错误的,所有就没有try catch。
刚好这次测试的时候有一个元素里没有数据,json串为""(空字符串)。然后解析的时候抛了个异常,我没有捕获,就终止那段程序。
请看AS2的JSON里抛异常的方式:
阅读全文...

标签: , , ,
回到顶部