本页面由 Flash 保存计划 从 Internet Archive 存档还原 · 快照 2006-07-08 · 原址 http://bbs.flash8.net/blogs/wish/default.aspx ← Flash 保存计划
SoundMixer.ComputeSpectrum(AS3)

用SoundMixer.ComputeSpectrum可以很简单的制作音乐波形图,当然你得用ActionScript 3.

第一个例子是使用256个矩形组成,每次改变其scaleY.

第二个例子是使用BimtapData类(根据Andre Michelle的例子改写的)。

第一个例子可能要好理解一些。

这里下载:ComputeSpectrumExample


                

//ComputeSpectrumeExample.as
package { import flash.display.Sprite; import flash.events.
*; import flash.geom.ColorTransform; import flash.geom.Matrix; import flash.geom.Rectangle; import flash.media.Sound; import flash.media.SoundMixer; import flash.net.URLRequest; import flash.utils.ByteArray; [SWF( backgroundColor='0', frameRate='30', height='300', width='300')] public class ComputeSpectrumExample extends Sprite { private var sound: Sound; private var bytes: ByteArray; private var rect:Array; public function ComputeSpectrumExample(){ sound = new Sound(); sound.load( new URLRequest( 'song.mp3' ) ); sound.play(0,100000000); stage.addEventListener( Event.ENTER_FRAME, onEnterFrame ); bytes = new ByteArray(); rect=new Array(); createRect(); } private function createRect():void{ for(var i:int=0;i<256;i++){ var r:Rect=new Rect(1,1,Math.random()*0xffffff); r.x=i+20; r.y=300; addChild(r); rect.push(r); } } private function onEnterFrame( event: Event ): void { SoundMixer.computeSpectrum( bytes, true, 0 ); var value: Number; var smooth: Number; for( var i: int = 0 ; i < 256 ; i++ ) { var rectangle:Rect=rect[i]; value = bytes.readFloat(); if( i == 0 ) smooth = value; else smooth += ( value - smooth ) ; rectangle.scaleY=smooth*200; } } } }
//Rect.as
package { import flash.display.Shape;
public class Rect extends Shape { public function Rect(width:Number,height:Number,color:uint){ graphics.beginFill(color); graphics.moveTo(0,0); graphics.lineTo(width,0); graphics.lineTo(width,-height); graphics.lineTo(0,-height); graphics.lineTo(0,0); graphics.endFill(); } } }

发布于 2006年5月25日 13:11   由 weilichuang   有 1 篇评论
一个3D例子(AS3)

需要Flash Player 9 beta 3.

滚轮控制缩放,鼠标的x方向控制镜头的左右旋转(放在中间时不旋转)。

在Box按下鼠标,会跳到特定的网页。

 

发布于 2006年5月24日 14:01   由 weilichuang   有 0 篇评论
地图的路径查找(AS3)

速度上比AS2快多了,改写自Andre Michelle的例子。

 

发布于 2006年5月20日 9:24   由 weilichuang   有 0 篇评论
Flade(AS3)

原版:http://www.cove.org/flade/

我改成AS3的。

这里下载。

发布于 2006年5月18日 16:19   由 weilichuang   有 0 篇评论
Haxe写javascript

Javascript我了解的不多,如果现在突然要用到怎么办?现在开始学?可是如果晚上就要交成果,那又怎么办?

还好,我们有Haxe,即使你不会Javascript,你同样能够写出很好的Javascript应用程序(这句话有点矛盾?),而且便于维护。

首先是下载Haxe(最新版为1.0):http://www.haxe.org/

下面讲解具体步骤:

1、新建一个文本文件,输入以下内容:

import js.Lib; import js.Button; import js.Event; import js.Text; class Test { private var button1 : Button; private var button2 : Button; private var text1 :Text; private var text2 :Text; public static function main() { var t:Test=new Test(); } function new() { untyped { button1=Lib.document.getElementById("button1"); button2=Lib.document.getElementById("button2"); text1 =Lib.document.getElementById("text1"); text2 =Lib.document.getElementById("text2"); } text1.value="按下按钮1---->2就会传值给文本框2"; button1.onclick=bclick1; button2.onclick=bclick2; } public function bclick1(evt : Event) { text2.value=text1.value ; Lib.alert("传递给文本框2的文字:"+text2.value); } public function bclick2(evt : Event) { text1.value=text2.value ; Lib.alert("传递给文本框1的文字:"+text2.value); } }
2、保存为Test.hx .再新建文件(compile.hxml),输入以下内容:

-js Test.js -main Test

3、双击compile.hxml(下载完Haxe,首先双击haxesetup.exe,这样系统就认识了hxml文件)。如果没出错的话,在同一目录下就会生成Test.js.
4、新建Test.html,输入以下内容:
<html>
<head>
<title>Testjs</title>
</head>
<body>

<form name="form1" method="post" action="">
<input type="text" id="text1">
<input type="button" name="Submit" value="1-----&gt;2" id="button1">
</form>

<form name="form2" method="post" action="">
<input type="text" id="text2">
<input type="button" name="Submit" value="2-----&gt;1" id="button2">
</form>
<script type="text/javascript" src="Test.js"></script>
</body>
</html>


5、结束,现在可以打开Test.html看看了。文件在这里下载。

发布于 2006年5月18日 15:22   由 weilichuang   有 0 篇评论
烟花效果(AS3)

这个烟花效果是根据Andre Michelle在Flex 2 alpha 1时写的一组粒子效果改写来的。

主要使用的是BitmapData中的setPixel()方法,也就是说Flash 8中同样可以实现这样的效果,但可能速度上差异比较大(没有试,不知能差多少)。

效果图如下:(观看需要Flash Player 9 beta 3).

发布于 2006年5月13日 18:12   由 weilichuang   有 3 篇评论
Haxe+Swfmill 制作雪花效果
Haxe已经趋于稳定,使用起来也很方便(比Nicolas Cannasse 的另一个AS2编译器MTASC 还要好),语法也比AS2严谨,将来也会支持AS3,而且能够编译js和服务器语言neko. 今天就通过雪花效果来讲解Haxe的使用方法(不使用Flash软件)
发布于 2006年5月6日 10:30   由 weilichuang   有 2 篇评论
^运算符
今天发现了^运算符的一种用法:

var x0:int=10 ; var x1:int= 5 ; x0 ^= x1; x1 ^= x0; x0 ^= x1; trace("x0 ="+x0); trace("x1 ="+x1);

结果就等同于:

var tempx:int; var x0:int=10; var x1:int=5; tempx=x0 ; x0=x1 ; x1=tempx ;

也就是两个数互换。(不过只适用于整数:)
在AS3里第一种方法要快点,AS2中第二种方法快。

顺便我又比较了一下AS3与AS2间速度的差异:
第一种方法AS3与AS2比较:
//AS3中
var fs: int;
var ms: int;
var x0:
int=10; var y0:int=5; var x1:int=4; var y1:int=6; trace("x0 ="+x0); trace("y0 ="+y0); trace("x1 ="+x1); trace("y1 ="+y1); ms = getTimer(); var tempx:int ; var tempy:int ; for(var i:int=0;i<1000000;i++){ x0 ^= x1; x1 ^= x0; x0 ^= x1; y0 ^= y1; y1 ^= y0; y0 ^= y1; }
fs = getTimer();
trace((fs-ms));//所用时间为:15微秒

  
//AS2中
var fs:Number ;
var ms:Number ;
var x0:Number=10;
var y0:Number
=5;
var x1:Number
=4;
var y1:Number
=6;
trace(
"x0 ="+x0);
trace(
"y0 ="+y0);
trace(
"x1 ="+x1);
trace(
"y1 ="+y1);
ms
= getTimer();
var tempx:Number ;
var tempy:Number ;
for(var i:Number=0;i<1000000;i++){
{
x0 ^= x1; x1 ^= x0; x0 ^= x1;
y0 ^= y1; y1 ^= y0; y0 ^= y1; }
fs
= getTimer();
trace(
(fs-ms));//所用时间为:3343微秒

第二种方法AS3与AS2比较:
//AS3中
var fs:int;
var ms:int;
var x0:
int=10; var y0:int=5; var x1:int=4; var y1:int=6; trace("x0 ="+x0); trace("y0 ="+y0); trace("x1 ="+x1); trace("y1 ="+y1); ms = getTimer(); var tempx:int ; var tempy:int ; for(var i:int=0;i<1000000;i++){ tempx=x0 ; tempy=y0 ; x0=x1 ; y0=y1; x1=tempx ; y1=tempy ; } fs = getTimer(); trace((fs-ms));//所用时间为:19微秒
//AS2中
var ms:Number ;
var fs:Number ;
var x0:Number
=10; var y0:Number=5; var x1:Number=4; var y1:Number=6; trace("x0 ="+x0); trace("y0 ="+y0); trace("x1 ="+x1); trace("y1 ="+y1); ms = getTimer(); var tempx:Number ; var tempy:Number ; for(var i:Number=0;i<1000000;i++){ tempx=x0 ; tempy=y0 ; x0=x1 ; y0=y1; x1=tempx ; y1=tempy ; } fs = getTimer(); trace((fs-ms));//所用时间为:2151微秒
大家可以算算,AS3的速度是AS2的多少倍了(当然这只是一个例子,不能代表全部)。

发布于 2006年4月30日 5:35   由 weilichuang   有 0 篇评论
3D柱状统计图(AS3)

今天闪吧的吧友问能不能实现3D柱状统计图,我就用Sandy配合Tween类试了一下,基本实现了 .(需要 flash player 8.5 .)

 

 左右方向键控制其旋转,上下方向键控制镜头到中心点的距离.(改变文本里的数字,再按enter按钮,柱状图就会动态改变.)

发布于 2006年4月25日 21:34   由 weilichuang   有 1 篇评论
台球(AS3)

做了一个类似于台球桌的3D场景,左右方向键控制其旋转,上下方向键控制镜头到点的距离。

本来球应该旋转的,只是程序有问题。(球旋转的中心点并不在球的中心,不知错在哪?)

里面的碰撞检测和2D环境下是一样的。

发布于 2006年4月24日 21:28   由 weilichuang   有 0 篇评论
360度全景(AS3)

Sandy的网站做过一个例子(Make a Cubic Panorama),效果很不错,只是速度太慢,只这能怪AVM1的执行效率太低。我用AS3重新编译了一次,果然速度快多了(虽然cpu占用率依然很高)。原版这里下载。

控制方法:

up,down ----上下旋转(这里有问题,还没发现解决方法:()

left,right --- 控制左右旋转

W,S ---------- 前后移动

A,D ---------- 左右移动

Q,E---------- 上下移动

下载到本地看,速度会快点,需要Flash player 8.5 (不错,Flash player 9 !)。

发布于 2006年4月23日 10:38   由 weilichuang   有 0 篇评论
Motion,Tween,MotionCam(AS3)
《Flash MX编程与创意实现》中关于运动的部分改成AS3的。
 
主程序如下:
package { import flash.display.*; import flash.events.*; import flash.util.*; import com.wish.motion.Motion ; import com.wish.motion.MotionCam ; import com.wish.ease.Ease; [SWF( backgroundColor='0x000000', frameRate='30', height='400', width='400')] public class Test extends Sprite { [Embed(source='wish.jpg')] var Pic:Class ; private var xCam:MotionCam ; private var yCam:MotionCam ; private var tween:Tween ; private var tween1:Tween ; private var sprite:Sprite ; public function Test(){ sprite=new Sprite(); var pic:*=new Pic(); pic.x=-pic.width/2 ; pic.y=-pic.height/2 ; sprite.addChild(pic); sprite.scaleX=sprite.scaleY=0.3 ; addChild(sprite); tween=new Tween(sprite,"x",Ease.easeInOutQuad,50,300,30,false); tween1=new Tween(sprite,"y",Ease.easeInOutQuad,50,300,30,false); tween.addEventListener(Motion.FINISHED ,finish); /* xCam=new MotionCam(sprite,"x",300); xCam.setActor(stage,"mouseX"); xCam.setLooping(true); yCam=new MotionCam(sprite,"y",300); yCam.setActor(stage,"mouseY"); yCam.setLooping(true); addEventListener("mouseDown",mousedown); addEventListener("mouseUp",mouseup); */ } private function finish(event:Event):void{ tween.yoyo(); tween1.yoyo(); } /* private function mousedown(event:MouseEvent):void{ xCam.startRecord(); yCam.startRecord(); } private function mouseup(event:MouseEvent):void{ xCam.stopRecord(); yCam.stopRecord(); } */ } }
发布于 2006年4月19日 14:06   由 weilichuang   有 1 篇评论
Color (AS3)
AS3中取消了Color类,用ColorTransform类代替(和以前的setTransform,getTransform一样)。我想改变MovieClip的颜色时非常麻烦,而且你用ColorTransform时如何调整颜色需要对颜色的配制理解很透彻。
比如我想改mc的颜色为红色,需要这样写:
import flash.geom.ColorTransform ; var color:ColorTransform=new ColorTransform(1,1,1,1,255,0,0,0) ; mc.transform.colorTransform=color ;
用Color类时,只需这样写:(Color类根据Robert Penner 的《Flash MX编程与创意实现》 中Color章节改写)
 
Color.setRGB(mc,0xff0000);
发布于 2006年4月18日 10:08   由 weilichuang   有 0 篇评论
ColorMatrix(AS3)

今天看到www.quasimondo.com上的一个例子,可以控制MovieClip的亮度,对比度等。非常不错。我改成了AcitonScript 3,这里下载

 

发布于 2006年4月13日 16:31   由 weilichuang   有 0 篇评论
连连看(AS3)

里面的算法是根据闪吧的一篇教程而来,忘了在什么地方。

由于图片是从外部导入,所以无法直接观看,需要下载到本地。(下载地址在下面,观看需要flash player 8.5)

发布于 2006年4月10日 9:31   由 weilichuang   有 0 篇评论
  总页数 2 第 1 页 [共有 26 条记录]   1 2 >