Flash图片墙

通过Flash的z轴,可以模拟3D效果,以下是一个图片墙的小例子:

1、新建一fla文件,命名PhotoWall.fla。

2、新建一as文件,命名PhotoWall.as,并关联到fla。

3、PhotoWall.as中编辑代码:

package 
{
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Vector3D;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.display.Shape;


[SWF(width = 800,height = 400,backgroundColor = 0x0)]
public class PhotoWall extends Sprite
{
private var _holder:Sprite;
private var _items:Array;
private var _radius:Number = 300;
private var _numItems:int = 10;
public function PhotoWall()
{
this.graphics.beginFill(0x0,1);
this.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
this.graphics.endFill();

//设置透视深度
this.transform.perspectiveProjection.fieldOfView = 110;
_holder = new Sprite();
_holder.x = 400;
_holder.y = 200;
_holder.z = 0;
addChild(_holder);
_items = new Array();
for (var i:int = 0; i < _numItems; i++)
{
var angle:Number = Math.PI * 2 / _numItems * i;
var item:Shape = createPictureItem();
item.x = Math.cos(angle) * _radius;
item.z = Math.sin(angle) * _radius;
item.rotationY = -360 / _numItems * i + 90;
_items.push(item);
}
sortItem();


addEventListener(Event.ENTER_FRAME,onEnterFrameHandler);
}

private function createPictureItem():Shape
{
var item:Shape = new Shape();
item.graphics.beginFill(Math.random() * 0xffffff,1);
item.graphics.drawRect(-40, -40, 120, 120);
_holder.addChild(item);
return item;
}
private function sortItem():void
{
_items.sort(depthSort);
for (var i:int = 0; i < _items.length; i++)
{
_holder.setChildIndex(_items[i] as Shape, i);
}
}
private function depthSort(objA:DisplayObject, objB:DisplayObject):int
{
var posA:Vector3D = objA.transform.matrix3D.position;
posA = _holder.transform.matrix3D.deltaTransformVector(posA);
var posB:Vector3D = objB.transform.matrix3D.position;
posB = _holder.transform.matrix3D.deltaTransformVector(posB);
return posB.z - posA.z;
}
private function onEnterFrameHandler(e:Event):void
{
_holder.rotationY += (stage.stageWidth/2-mouseX)*0.01;
//_holder.y +=  (mouseY - _holder.y) * 0.1;
sortItem();
}
}
}

Ctrl+Enter效果如下:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西溪漫步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值