首页 技术 正文
技术 2022年11月10日
0 收藏 806 点赞 4,655 浏览 3476 个字
 package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.geom.PerspectiveProjection;
import flash.geom.Point;
import flash.geom.Vector3D;
import flash.utils.Timer;
import flash.utils.getDefinitionByName; /**
* @author Frost.Yen
* @E-mail 871979853@qq.com
* @create 2015-8-13 下午4:03:27
*
*/
[SWF(width="1024",height="768")]
public class RotateMain extends Sprite
{
[Embed(source="assets/001.png")]
private var _img0:Class;
[Embed(source="assets/002.png")]
private var _img1:Class;
[Embed(source="assets/003.png")]
private var _img2:Class;
[Embed(source="assets/004.png")]
private var _img3:Class;
[Embed(source="assets/005.png")]
private var _img4:Class;
[Embed(source="assets/006.png")]
private var _img5:Class;
[Embed(source="assets/007.png")]
private var _img6:Class;
[Embed(source="assets/007.png")]
private var _img7:Class; private var _num:int = 7;
private var _radius:Number = 300;
private var _itemArr:Array = [];
private var _speed:Number = 1;
private var _ratio:Number = 0.25;//系数
private var _downX:Number;
private var _container:Sprite;
private var _timer:Timer = new Timer(20);
public function RotateMain()
{
this.graphics.beginFill(0,1);
this.graphics.drawRect(0,0,1024,768);
this.graphics.endFill();
initViews();
initEventListeners();
}
private function initViews():void
{
_container = new Sprite();
_container.x = 1024*0.5;
_container.y = 768*0.5-200;
_container.z = 0;
this.addChild(_container);
for(var i:int = 0;i<_num;i++){
var angle:Number = Math.PI * 2/_num*i;
var sp:Sprite = new Sprite();
//var img:Class = getDefinitionByName("RotateMain__img"+i) as Class;
var bmp:Bitmap = new this["_img"+i](); sp.x = Math.cos(angle)*_radius;
sp.z = Math.sin(angle)*_radius;
sp.addChild(bmp);
_container.addChild(sp);
_itemArr.push(sp);
}
swapItems();
_timer.addEventListener(TimerEvent.TIMER,onTimer);
_timer.start(); }
private function initEventListeners():void
{
stage.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
}
private function onDown(e:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_MOVE,onMove);
stage.addEventListener(MouseEvent.MOUSE_UP,onUp);
_timer.stop();
_downX = mouseX;
}
private function onMove(e:MouseEvent):void
{
_speed = (_downX-mouseX)*0.01;
_container.rotationY += _ratio * _speed;
var p:PerspectiveProjection = new PerspectiveProjection();
p.fieldOfView = 55;
p.projectionCenter = new Point(512,-100);
_container.transform.perspectiveProjection = p;
swapItems(); }
private function onUp(e:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE,onMove);
stage.removeEventListener(MouseEvent.MOUSE_UP,onUp);
_timer.start();
}
private function onTimer(e:TimerEvent):void
{
if(_speed < -1){
_speed+=0.02;
if(_speed >=-1){
_speed = -1;
}
}else if(_speed >1){
_speed-=0.02;
if(_speed <=1){
_speed = 1;
}
}else if(_speed>-1&&_speed<0){
_speed-=0.02;
}else if(_speed<1&&_speed>0){
_speed+=0.02;
}
_container.rotationY += _ratio *_speed ;//trace(_ratio,_speed);
var p:PerspectiveProjection = new PerspectiveProjection();
p.fieldOfView = 55;
p.projectionCenter = new Point(512,-100) ; //视点
_container.transform.perspectiveProjection = p;
swapItems();
}
private function swapItems():void
{
_itemArr.sort(swapDepth);
for(var i:int = 0; i < _itemArr.length; i++ )
{
_container.addChildAt(_itemArr[i] as Sprite,i);
(_itemArr[i] as Sprite).rotationY -= _ratio *_speed;
}
}
private function swapDepth(objA:DisplayObject,objB:DisplayObject):int
{
var posA:Vector3D = objA.transform.matrix3D.position ;
posA = _container.transform.matrix3D.deltaTransformVector(posA);
var posB:Vector3D = objB.transform.matrix3D.position;
posB = _container.transform.matrix3D.deltaTransformVector(posB);
return posB.z - posA.z;
}
}
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,565
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,413
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,186
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905