中国教程网论坛's Archiver

cao4811 发表于 2009-11-3 16:10

AS3.0 实例—制作3D旋转球

[i=s] 本帖最后由 cao4811 于 2009-11-3 16:14 编辑 [/i]

AS3.0 实例—制作3D旋转球

程序开发环境:Flash CS4 ActionScript 3.0

演示:
[swf]http://bbs.jcwcn.com/attachments/month_0911/0911031610e84e7fcccd697f36.swf[/swf]

本教程用BitmapSphereBasic类,创建改变旋转方向和移动贴图的实例。

1、新建AS3.0 flv文档,文档属性,500*500像素,帧频60fps ,存盘。如图1;
[attach]1253214[/attach]
2、导入制作球体和背景的图片到库中,右键单击球体贴图图片,命名为Earth。如图2;
[attach]1253215[/attach]
3、创建名为dotClip的影片剪辑,图层1绘制15*15笔触黑色,填充色为#cccccc的圆形,第2帧插入关键帧。添加图层2,在第2 帧插入关键帧,绘制5*5无笔触,颜色为黑色的圆形。图层结构如图3:
[attach]1253216[/attach]
4、返回场景1,图层1拖入背景图片。
5、添加as层输入代码:[code]//导入BitmapSphereBasic类
import com.flashandmath.cs4.BitmapSphereBasic;
//创建一个行星
var board:Sprite = new Sprite();
//添加到显示列表
this.addChild(board);
//生成 datatype BitmapSphereBasic 的一个函数。
// 设定函数初始值。
var ball:BitmapSphereBasic;
//旋转的一个布尔值的函数。
var autoOn:Boolean = true;
//两个函数为鼠标旋转。
var prevX:Number;
var prevY:Number;
//行星的位置.
var ballX:Number = 250;
var ballY:Number = 250;
//贴图
var imageData:BitmapData = new Earth(800,548);
ball = new BitmapSphereBasic(imageData);
board.addChild(ball);
ball.x = ballX;
ball.y = ballY;
//滤镜
ball.filters = [new GlowFilter(0xB4B5FE,0.6,32.0,32.0,1)];
this.addEventListener(Event.ENTER_FRAME,autoRotate);
board.addEventListener(MouseEvent.ROLL_OUT,boardOut);
board.addEventListener(MouseEvent.MOUSE_MOVE,boardMove);
board.addEventListener(MouseEvent.MOUSE_DOWN,boardDown);
board.addEventListener(MouseEvent.MOUSE_UP,boardUp);
function autoRotate(e:Event):void {
        if (autoOn) {
                ball.autoSpin(-1);

        }

}
//三个侦听为旋转和鼠标。
function boardOut(e:MouseEvent):void {
        autoOn = true;

}
function boardDown(e:MouseEvent):void {
        prevX = board.mouseX;
        prevY = board.mouseY;
        autoOn = false;

}
function boardUp(e:MouseEvent):void {
        autoOn = true;

}
function boardMove(e:MouseEvent):void {
        var locX:Number = prevX;
        var locY:Number = prevY;
        //取反
        if (! autoOn) {
                prevX = board.mouseX;
                prevY = board.mouseY;
                ball.rotateSphere(prevY - locY, - (prevX - locX),0);
                e.updateAfterEvent();

        }
}[/code]6、把附件中的com解压到同一目录下,完工测试。

最后一次想你 发表于 2009-11-3 16:22

FLASH AS 好难

nxasd 发表于 2009-11-3 21:30

[swf]http://bbs.jcwcn.com/attachments/month_0911/0911032130d4b4a27532391fa0.swf[/swf]
很漂亮的图,交作业了。

cao4811 发表于 2009-11-4 06:31

[b] [url=http://bbs.jcwcn.com/redirect.php?goto=findpost&pid=6130581&ptid=278490]3#[/url] [i]nxasd[/i] [/b]

作得不错,很漂亮。

zhymx 发表于 2009-11-12 17:02

很好看

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.