2107/093
Flash-Five3d类学习
早上在Google Reader里看到的一个第三方类,试了下效果不错,就准备去下载个类库,结果发现five3d.mathieu-badimon.com 居然被河蟹了?顺便骂一句,Picasa也被河蟹了,MLGBZ的!GFW,bullshit!
OK,骂完了,先来2个Demo,一个是文本的:
另一个是图形的:
这里贴下图形Demo的文档类Codes:
package {
import flash.display.StageScaleMode;
import flash.display.StageAlign;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
//如果是Flash CS3,一定要在库里边加一个Button组件,不然会报错,CS4版则没有这个问题~
import fl.controls.Button;
//导入five3D类
import five3D.display.DynamicText3D;
import five3D.display.Scene3D;
import five3D.display.Shape3D;
import five3D.display.Sprite3D;
import five3D.typography.HelveticaBold;
import five3D.utils.Drawing;
//这个缓动类,就不介绍了
import gs.TweenLite;
import gs.TweenMax;
public class Five3dDemo extends Sprite {
var scene:Scene3D;
var STAGEW:uint = stage.stageWidth;
var STAGEH:uint = stage.stageHeight;
var TOTAL:uint = 350;
public function Five3dDemo() {
//舞台缩放和对齐
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
init();
}
private function init():void {
//建立一个Scene3D实例
scene = new Scene3D();
addChild(scene);
drawShape();
drawButton();
}
private function drawShape():void{
for (var i:uint=0; i< = TOTAL; i++) {
//建立353个方块
var _obj:Shape3D = new Shape3D();
//生成随机颜色
var color:uint = rand(0,0xffffff);
_obj.graphics3D.beginFill(color);
//画方块
_obj.graphics3D.drawRect(-10, -10, 20, 20);
_obj.graphics3D.endFill();
//让图形居中摆放
_obj.x = (STAGEW-20)/2;
_obj.y = (STAGEH-20)/2;
scene.addChild(_obj);
reMove(_obj,0);
}
}
//将移动效果改成了TweenMax的曲线运动,更3D效果
private function reMove(_obj:Object,_time:uint){
TweenMax.to(_obj, 1.5, {delay:_time,x:rand(0,STAGEW),y:rand(0,STAGEH), z:rand(0,(STAGEW+STAGEH)/2), bezier:[{x:rand(0,STAGEW), y:rand(0,STAGEH), z:rand(0,(STAGEW+STAGEH)/2)},{x:rand(0,STAGEW), y:rand(0,STAGEH), z:rand(0,(STAGEW+STAGEH)/2)}], scaleX:rand(0,1.5), scaleY:rand(0,1.5), scaleZ:rand(0,1.5), rotationX:rand(-50,50),rotationY:rand(-50,50),rotationZ:rand(-50,50), alpha:rand(0.3,1), onComplete:reMove,onCompleteParams:[_obj,1]});
//TweenLite.to(_obj,1.5,{delay:_time,x:rand(0,STAGEW),y:rand(0,STAGEH), z:rand(0,(STAGEW+STAGEH)/2), scaleX:rand(0,1.5), scaleY:rand(0,1.5), scaleZ:rand(0,1.5), rotationX:rand(-50,50),rotationY:rand(-50,50),rotationZ:rand(-50,50), alpha:rand(0.3,1), onComplete:reMove,onCompleteParams:[_obj]});
}
//在场景里加入2个按钮
private function drawButton():void{
var disBtn:Button = new Button();
disBtn.label = "排序";
disBtn.x = 20;
disBtn.y = 20;
addChild(disBtn);
disBtn.addEventListener(MouseEvent.CLICK,displayNumber);
var reDisBtn:Button = new Button();
reDisBtn.label = "打乱";
reDisBtn.x = 20;
reDisBtn.y = 50;
addChild(reDisBtn);
reDisBtn.addEventListener(MouseEvent.CLICK,reDisplayNumber);
}
//让方块顺序摆放
private function displayNumber(_evt:MouseEvent){
for(var i:uint=0; i<= TOTAL; i++){
//TweenLite.killTweensOf(scene.getChildAt(i), true);
TweenMax.killTweensOf(scene.getChildAt(i), true);
var _obj:Object = scene.getChildAt(i);
TweenLite.to(_obj,1.5,{x:(i%27*20+40),y:(int(i/27)*20+110), z:0, scaleX:1, scaleY:1, scaleZ:1, rotationX:0,rotationY:0,rotationZ:0});
}
}
//打乱方块排列
private function reDisplayNumber(_evt:MouseEvent){
for(var i:uint=0; i<= TOTAL; i++){
var _obj:Object = scene.getChildAt(i);
reMove(_obj,0);
}
}
//生成startNum到endNum的随机数
private function rand(startNum,endNum){
return (Math.random()*(endNum-startNum) + startNum);
}
}
}
这个效果可以干嘛呢?可以用来做Loading动画,或者给某些癖好的人做乱七八糟横竖乱跑的动画效果~
Five3d的官方网站:five3d.mathieu-badimon.com,请自觉翻墙。
Google Code 下载地址:http://code.google.com/p/five3d/downloads/list。
唉,不知道是code插件的问题还是WP本身的问题,循环体内的"<"总是被解析成XML。。。
July 20th, 2009 - 15:59
[Reply]
Anonymous Reply:
2009-11-24 at 12:09 am
@DFdou,
your code ‘< =' should be '<='
[Reply]
DFdou Reply:
2009-11-26 at 7:40 pm
@, OH,.,it’s my fault..