扇形菜单 – 初步

http://dougmccune.com/blog/2007/08/04/the-making-of-tileui/

的确是很COOOOL的桌面文档管理程序。不过我更相中程序中的环形菜单,很爽的样子。
于是花点时间研究了下,仿那个菜单的生成和消失过程做了一个类似的,目前基本实现了菜单的绘制部分
label和tooltip功能还没有加上去,还在考虑是继续用Flash IDE还是转到FLEX上制作,头痛~~~
DEMO
点击上面三个蓝色的圆形按钮就可以看到生成的菜单了。
Flash版本最好是9.0.47.0或以上
P.S. 有时候产生的菜单不能完全消失掉,初步检测是滤镜的原因~~~

如何获取国际标准时间

为了制作奥运倒计时,得想个办法获得到国际标准时间。
首先想到的便是Webservices,通用,易用。
但是Flash CS3并没有提供Webservices组件。于是使用了Roading的《flash9/flash cs3(as3)通过soap访问Web Services》。
好了,方法有了,那么Service源呢,这个变难了,找了几个提供Webservices的网站
如:

http://www.webservicex.net/

http://www.webservices.org/

但都未找到这项服务。
继续上网冲浪…
得到了《获取Nist的美国官方标准时间的解决办法》
作者用的是C#实现的,仔细看了下,用AS3制作貌似差不多。
他使用的是http://nist.time.gov/timezone.cgi?UTC/s/0先得到标准时间,然后转为北京八区时间。
实际上有更容易的方法,就是将地址中的0换成8,就是东八区的标准时间了,也就是:
http://nist.time.gov/timezone.cgi?UTC/s/8
部分代码:
[code]
private function getTheTime():void
{
var request:URLRequest = new URLRequest("http://nist.time.gov/timezone.cgi?UTC/s/8[color=Blue]?rnd="+Math.random());
request.contentType = "text/xml";
request.method = URLRequestMethod.POST;
loader = new URLLoader();
loader.addEventListener(Event.COMPLETE, loadComplete);
try
{
loader.load(request);
}
catch (error:Error)
{
trace("Load Error!");
}
}
private function loadComplete(event:Event):void
{
var result:String = String(loader.data);
trace(result);
}
[/code]
代码中的[color=Blue]rnd=”+Math.random()是用来防止Flash读取缓存,得不到最新数据
loadComplete方法中的result就是得到的网页源码,通过字串匹配就可得到时间字符串了.
OK,回过头来接着研究Webservices。找到了http://www.worldtimeserver.com。
(http://www.worldtimeserver.com/current_time_in_CN.aspx也可以访问这个页,使用上面的方法提取出北京时间)
使用Roading的方法:
[code]
private function getTheTime2():void
{
var soap:Namespace = new Namespace("http://schemas.xmlsoap.org/soap/envelope/");
var req:URLRequest = new URLRequest("http://www.worldtimeserver.com/wtsservice/localtime.asmx?op=GetLocalDateTimeString");
req.method = URLRequestMethod.POST;
req.requestHeaders.push(new URLRequestHeader("Content-Type", "text/xml;charset=utf-8"));
req.requestHeaders.push(new URLRequestHeader("SOAPAction", "http://worldtimeserver/wtsservice/localtime/GetLocalDateTimeString"));
var rXML:XML =

;
rXML.soap::Body.appendChild(
[color=Blue]
用户名
密码
US-NY

);
req.data = rXML;
loader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener("ioError", ioSOAPError);
loader.addEventListener(Event.COMPLETE, SOAPLoaded);
loader.load(req);
}
private [...]

又现AS3波形

呵呵,又是一个AS3编写的波形效果.很COOOOOOL.至于有多酷,就得自己评定了.看这里:
效果1:

效果2:

效果3:

效果4:

效果5:

Flash效果如下([color=Blue]歌曲文件比较大,请稍待.如果出现安全沙箱报错提示,多刷新几次就好了 点击FLASH会随机出现其他效果 ^_^):

Flash动画
在线播放

如果访问有问题.可以观看[color=Blue]作者BLOG:

http://www.anttikupila.com/flash/revolt-actionscript-3-based-spectrum-analyzer-source-released/

作者同时还把源文件无私的奉献出来.在这里先表示感谢.
方便观看,我把源演示地址贴出:[color=Blue] 点这里观看
源文件下载:[color=Blue] 点这里下载
我还收藏了一个波形效果,出自lab.andre-michelle.com:
效果图:

演示:

Flash动画
在线播放

也很棒!

AS3 获取SWF参数

用AS2时,可以直接把参数加在flash的尾部,如:demo.swf?u1=good&u2=bad
在flash里就默认u1,u2为根变量。可以使用_root.u1和_root.u2来得到值
但到了AS3里面这样做已经不行了。
要用到flash.display.loaderInfo类的parameters属性,返回的是一个参数对象
使用方法:
例如在文档类中定义var param:Object = root.loaderInfo.parameters;
如果取u1的值,可以用param["u1"],同样u2的值:param["u2"]
做了个小例子,document class如下:
[code][color=#000000]package [color=#0000ff]{
[color=#800000]import [color=#0000a0]flash[color=#0000ff].[color=#0000a0]display[color=#0000ff].[color=#0000a0]Sprite[color=#0000ff];
[color=#800000]import [color=#0000a0]flash[color=#0000ff].[color=#0000a0]display[color=#0000ff].[color=#0000a0]Stage[color=#0000ff];
[color=#800000]import [color=#0000a0]flash[color=#0000ff].[color=#0000a0]display[color=#0000ff].[color=#0000a0]StageScaleMode[color=#0000ff];
[color=#800000]import [color=#0000a0]flash[color=#0000ff].[color=#008000]text[color=#0000ff].[color=#0000a0]TextField[color=#0000ff];
[color=#800000]import [color=#0000a0]flash[color=#0000ff].[color=#008000]text[color=#0000ff].[color=#0000a0]TextFieldAutoSize[color=#0000ff];
[color=#00a0c0]public class LoaderInfoDemo [color=#00a0c0]extends [color=#0000a0]Sprite [color=#0000ff]{
[color=#00a0c0]public [color=#800000]function LoaderInfoDemo[color=#0000ff]([color=#0000ff])[color=#0000ff]{
stage[color=#0000ff].[color=#008000]scaleMode [color=#0000ff]= [color=#0000a0]StageScaleMode[color=#0000ff].NO_SCALE[color=#0000ff];
[color=#800000]var out_txt[color=#0000ff]:[color=#0000a0]TextField [color=#0000ff]= createText[color=#0000ff]([color=#0000ff])[color=#0000ff];
out_txt[color=#0000ff].[color=#008000]border [color=#0000ff]= [color=#0000a0]true[color=#0000ff];
out_txt[color=#0000ff].[color=#008000]borderColor [color=#0000ff]= 0xFF6600[color=#0000ff];
out_txt[color=#0000ff].y [color=#0000ff]= 20[color=#0000ff];
[color=#5000a0]addChild[color=#0000ff](out_txt[color=#0000ff])[color=#0000ff];
[color=#800000]var info_txt[color=#0000ff]:[color=#0000a0]TextField [color=#0000ff]= createText[color=#0000ff]([color=#0000ff])[color=#0000ff];
info_txt[color=#0000ff].[color=#008000]text [color=#0000ff]= [color=#ff00ff]"修改loaderInfoDemo.swf?msg=xxx中的xxx值,然后回车"[color=#0000ff];
info_txt[color=#0000ff].[color=#008000]autoSize [color=#0000ff]= [color=#0000a0]TextFieldAutoSize[color=#0000ff].[color=#008000]LEFT[color=#0000ff];
[color=#5000a0]addChild[color=#0000ff](info_txt[color=#0000ff])[color=#0000ff];
[color=#800000]var param[color=#0000ff]:[color=#0000a0]Object [color=#0000ff]= root[color=#0000ff].loaderInfo[color=#0000ff].parameters[color=#0000ff];
[color=#800000]if[color=#0000ff](param[color=#0000ff][[color=#ff00ff]"msg"[color=#0000ff]][color=#0000ff]![color=#0000ff]=[color=#0000a0]null[color=#0000ff])[color=#0000ff]{
out_txt[color=#0000ff].[color=#008000]text [color=#0000ff]= param[color=#0000ff][[color=#ff00ff]"msg"[color=#0000ff]][color=#0000ff];
[color=#800000]trace[color=#0000ff]([color=#ff00ff]"value:"[color=#0000ff]+param[color=#0000ff][[color=#ff00ff]"msg"[color=#0000ff]][color=#0000ff])[color=#0000ff];
[color=#0000ff]}[color=#800000]else[color=#0000ff]{
out_txt[color=#0000ff].[color=#008000]text [color=#0000ff]= [color=#ff00ff]"null"[color=#0000ff];
[color=#800000]trace[color=#0000ff]([color=#ff00ff]"value:null"[color=#0000ff])[color=#0000ff];
[color=#0000ff]}
[color=#0000ff]}
[color=#00a0c0]private [color=#800000]function createText[color=#0000ff]([color=#0000ff])[color=#0000ff]:[color=#0000a0]TextField[color=#0000ff]{
[color=#800000]var tmp[color=#0000ff]:[color=#0000a0]TextField [color=#0000ff]= [color=#800000]new [color=#0000a0]TextField[color=#0000ff]([color=#0000ff])[color=#0000ff];
tmp[color=#0000ff].[color=#008000]selectable [color=#0000ff]= [color=#0000a0]false[color=#0000ff];
tmp[color=#0000ff].[color=#008000]width [color=#0000ff]= 100[color=#0000ff];
tmp[color=#0000ff].[color=#008000]height [color=#0000ff]= 20[color=#0000ff];
[color=#800000]return [...]

AS3 反射(倒影)类 – Reflection class

原文地址:

http://codycodingcowboy.cahlan.com/2007/01/reflection-class.html

作者说可以对任何displayObject做出倒影来。
查看效果
查看源代码

FLASH AS3 学习 Sound-Wave

先把FLASH放上来,然后再放教程和源文件,时间紧,所以只能一步步的来
因为本站空间服务商把MP3文件禁掉了,加之空间速度慢得惊人,所以这个FLASH没有加载任何音乐.只有下载到本地后,在输入框里输入本地歌曲路径进行测试.
推荐测试歌曲:蔡琴的[color=Blue]《渡口》

Flash动画
在线播放

下载地址(请使用Flash Player 9打开):

http://www.kingnare.com/auzn/attachments/month_0610/y2006102223386.swf

flash player 9 下载地址:http://www.adobe.com/go/getflashplayer
/*
下面先实现WINAMP5的左右声道效果(没注意过的网友可以把WINAMP控制面版拉长些,就能看到了)
*/
仔细观察下那个声道效果,可以发现
每侧各有11个矩形块,也就是说音量可以分为12级
声音大小变换间有明显的过渡效果
按照通常的想法是根据得到的数据动态调节块的形变,然后用一些遮罩实现
先抛开这些想法,我们来看看WINAMP是怎么实现的。打开WINAMP所在的文件夹,
进入Skins\Winamp Modern\,能发现两个文件:
beat_left.png
beat_right.png
这两个文件就是WINAMP左右声道调用的图片,可以看到是由15个状态图片组成的
看到这估计大家都想到了用FLASH实现的方法了:
先获得左右声道的值,然后转换为0~15间的一个整数,根据这个整数设置图片的y轴坐标
至于过渡效果,这里先用简单的方法实现:匀速递减
未完,待续…

写给自己的教程:动态文本的遮罩

网上已经有很多的解决方法了.自从使用Flash8后,发现可以用滤镜解决一些遮罩问题.
例如:
在舞台上画一个100×100的矩形
新建一层,建一个动态文本框,随便输入一些字
将矩形所在层设置为动态文本的遮罩层
这时CTRL+ENTER测试影片,发现文本并未显示
回到编辑状态,给文本加入1或N(N>=2)个滤镜效果
再次进行编译,发现文本显示出来了
如果想清晰的显示文本内容,可以将使用的滤镜效果都设置为最低即可
例如设置一个Filter滤镜,然后将模糊X,Y值全设置为0,品质设置为最低
不过有个地方要注意下,如果使用Action来重写文本内容,最好(用Action再)重新设置下滤镜,不然可能会出现文本显示不全的现像

AS3下使用ColorMatrix

AS2的源文件下载:Flash 8 Source – ColorMatrix
在学习过程中发现用到了ColorMatrix类.就把这个类直接拿过来编译,当然,错误N多.
没办法,改吧!
下面是已经能够在AS3下正常使用的ColorMatrix类:
最后感谢作者的无私精神.
更改后的文件: 点击下载此文件
P.S:其他人更改

嗯,开个学习日记的分类

开个分类,没事把学到的东东记录一下,以后找资料也方便些
这是个纪念帖,要留下点有意义的东东 –>
贴上第一次编写AS3.0的代码吧,嘿嘿
[code][color=#800000]var _mc[color=#0000ff]:[color=#0000a0]MovieClip [color=#0000ff]= [color=#800000]new [color=#0000a0]MovieClip[color=#0000ff]([color=#0000ff])[color=#0000ff];
[color=#800000]var _bmd[color=#0000ff]:[color=#0000a0]BitmapData [color=#0000ff]= [color=#800000]new [color=#0000a0]BitmapData[color=#0000ff](100[color=#0000ff],100[color=#0000ff],[color=#0000a0]true[color=#0000ff],0x0F0000FF[color=#0000ff])[color=#0000ff];
[color=#800000]var _bmp[color=#0000ff]:[color=#0000a0]Bitmap [color=#0000ff]= [color=#800000]new [color=#0000a0]Bitmap[color=#0000ff](_bmd[color=#0000ff],[color=#ff00ff]"auto"[color=#0000ff],[color=#0000a0]true[color=#0000ff])[color=#0000ff];
[color=#800000]var _txt[color=#0000ff]:[color=#0000a0]TextField [color=#0000ff]= [color=#800000]new [color=#0000a0]TextField[color=#0000ff]([color=#0000ff])[color=#0000ff];
_txt[color=#0000ff].[color=#008000]text [color=#0000ff]= [color=#ff00ff]"Have A Gooooooood Time"[color=#0000ff];
_txt[color=#0000ff].[color=#008000]wordWrap [color=#0000ff]= [color=#0000a0]true[color=#0000ff];
_mc[color=#0000ff].[color=#5000a0]addChild[color=#0000ff](_bmp[color=#0000ff])[color=#0000ff];
_mc[color=#0000ff].[color=#5000a0]addChild[color=#0000ff](_txt[color=#0000ff])[color=#0000ff];
[color=#0000a0]this[color=#0000ff].[color=#5000a0]addChild[color=#0000ff](_mc[color=#0000ff])[color=#0000ff];
[/code]

Page 4 of 4«1234