AS3.0 Bitmap类实现图片3D旋转效果
2014-03-26 11:57
471 查看
package
{
import flash.display.Sprite;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.display.Bitmap;
import flash.geom.PerspectiveProjection;
import flash.geom.Point;
import flash.display.Shape;
import flash.geom.Matrix;
import flash.events.MouseEvent;
import flash.display.GradientType;
public class Main extends Sprite
{
private var picw:Number = 314;
private var pich:Number = 391;
private var gap:Number = 1.5;
private var speeds:Number = 0.3;
private var maskshape:Shape = new Shape();
private var topcont:Sprite = new Sprite();
private var reftcont:Sprite = new Sprite();
private var sumcont:Sprite = new Sprite();
public function Main():void
{
init();
}
private function init():void
{
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,com);
loader.load(new URLRequest("http://files.cnblogs.com/zhoujunfeng2011/Pictures/http_imgloadCA7PGMNR.jpg"));
}
private function com(evt:Event):void
{
var loader:Loader = Loader(evt.target.loader);
var image:Bitmap = Bitmap(loader.content);
var toppic:Bitmap = new Bitmap(image.bitmapData);
var reftpic:Bitmap = new Bitmap(image.bitmapData);
addChild(sumcont);
topcont.addChild(toppic);
toppic.x = - picw / 2;
toppic.y = - pich / 2;
reftcont.addChild(reftpic);
reftpic.x = - picw / 2;
reftpic.y = - pich / 2;
reftcont.rotationX = 180;
sumcont.addChild(topcont);
topcont.x = 0;
topcont.y = pich / 2;
topcont.z = 500;
sumcont.addChild(reftcont);
reftcont.x = reftcont.y;
reftcont.y = topcont.y + pich + gap;
reftcont.z = 500;
var pp:PerspectiveProjection = new PerspectiveProjection();
pp.fieldOfView = 55;
pp.projectionCenter = new Point(picw/2,pich/2);
sumcont.transform.perspectiveProjection = pp;
sumcont.x = 400;
sumcont.y = 30;
reftcont.addChild(maskshape);
maskshape.x = reftpic.x;
maskshape.y = reftpic.y;
drawInMask();
reftpic.cacheAsBitmap = true;
maskshape.cacheAsBitmap = true;
reftpic.mask = maskshape;
stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseover);
stage.addEventListener(Event.MOUSE_LEAVE,mouseout);
sumcont.addEventListener(Event.ENTER_FRAME,onFrameHandler);
}
private function drawInMask():void
{
var FillType:String = GradientType.LINEAR;
var mat:Matrix = new Matrix();
var colors:Array = [0xff0000,0xff0000];
var alphas:Array = [0,0.5];
var ratios:Array = [5,255];
mat.createGradientBox(picw,pich,90*(Math.PI/180));
maskshape.graphics.lineStyle();
maskshape.graphics.beginGradientFill(FillType,colors,alphas,ratios,mat);
maskshape.graphics.drawRect(0,0,picw,pich);
maskshape.graphics.endFill();
}
private function mouseover(evt:MouseEvent):void
{
stage.addEventListener(Event.ENTER_FRAME,OnEnter);
}
private function mouseout(evt:Event):void
{
stage.removeEventListener(Event.ENTER_FRAME,OnEnter);
speeds = 0.3;
}
private function OnEnter(evt:Event):void
{
speeds = (this.mouseX - this.stage.stageWidth/2)/40;
}
private function onFrameHandler(evt:Event):void
{
topcont.rotationY += speeds;
reftcont.rotationY += speeds;
}
}
}
{
import flash.display.Sprite;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.display.Bitmap;
import flash.geom.PerspectiveProjection;
import flash.geom.Point;
import flash.display.Shape;
import flash.geom.Matrix;
import flash.events.MouseEvent;
import flash.display.GradientType;
public class Main extends Sprite
{
private var picw:Number = 314;
private var pich:Number = 391;
private var gap:Number = 1.5;
private var speeds:Number = 0.3;
private var maskshape:Shape = new Shape();
private var topcont:Sprite = new Sprite();
private var reftcont:Sprite = new Sprite();
private var sumcont:Sprite = new Sprite();
public function Main():void
{
init();
}
private function init():void
{
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,com);
loader.load(new URLRequest("http://files.cnblogs.com/zhoujunfeng2011/Pictures/http_imgloadCA7PGMNR.jpg"));
}
private function com(evt:Event):void
{
var loader:Loader = Loader(evt.target.loader);
var image:Bitmap = Bitmap(loader.content);
var toppic:Bitmap = new Bitmap(image.bitmapData);
var reftpic:Bitmap = new Bitmap(image.bitmapData);
addChild(sumcont);
topcont.addChild(toppic);
toppic.x = - picw / 2;
toppic.y = - pich / 2;
reftcont.addChild(reftpic);
reftpic.x = - picw / 2;
reftpic.y = - pich / 2;
reftcont.rotationX = 180;
sumcont.addChild(topcont);
topcont.x = 0;
topcont.y = pich / 2;
topcont.z = 500;
sumcont.addChild(reftcont);
reftcont.x = reftcont.y;
reftcont.y = topcont.y + pich + gap;
reftcont.z = 500;
var pp:PerspectiveProjection = new PerspectiveProjection();
pp.fieldOfView = 55;
pp.projectionCenter = new Point(picw/2,pich/2);
sumcont.transform.perspectiveProjection = pp;
sumcont.x = 400;
sumcont.y = 30;
reftcont.addChild(maskshape);
maskshape.x = reftpic.x;
maskshape.y = reftpic.y;
drawInMask();
reftpic.cacheAsBitmap = true;
maskshape.cacheAsBitmap = true;
reftpic.mask = maskshape;
stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseover);
stage.addEventListener(Event.MOUSE_LEAVE,mouseout);
sumcont.addEventListener(Event.ENTER_FRAME,onFrameHandler);
}
private function drawInMask():void
{
var FillType:String = GradientType.LINEAR;
var mat:Matrix = new Matrix();
var colors:Array = [0xff0000,0xff0000];
var alphas:Array = [0,0.5];
var ratios:Array = [5,255];
mat.createGradientBox(picw,pich,90*(Math.PI/180));
maskshape.graphics.lineStyle();
maskshape.graphics.beginGradientFill(FillType,colors,alphas,ratios,mat);
maskshape.graphics.drawRect(0,0,picw,pich);
maskshape.graphics.endFill();
}
private function mouseover(evt:MouseEvent):void
{
stage.addEventListener(Event.ENTER_FRAME,OnEnter);
}
private function mouseout(evt:Event):void
{
stage.removeEventListener(Event.ENTER_FRAME,OnEnter);
speeds = 0.3;
}
private function OnEnter(evt:Event):void
{
speeds = (this.mouseX - this.stage.stageWidth/2)/40;
}
private function onFrameHandler(evt:Event):void
{
topcont.rotationY += speeds;
reftcont.rotationY += speeds;
}
}
}
相关文章推荐
- 具有3D旋转效果的图片组的一种实现
- 纯JS实现旋转图片3D展示效果
- 具有3D旋转效果的图片组的一种实现
- 纯JS实现旋转图片3D展示效果
- 具有3D旋转效果的图片组的一种实现
- 实现图片旋转木马3D浏览效果
- JS实现3D图片旋转展示效果代码
- JS实现3D图片旋转展示效果代码
- CSS3 transform实现图片旋转木马3D浏览效果
- 【图片】3d鼠标拖动图片360°旋转动画效果 3dEye.js
- js实现3D图片环展示效果
- 实现3D旋转效果的方法
- android 3D旋转效果实现
- css3实现图片3d翻转效果
- android 动画rotate实现图片不停旋转的效果
- Android编程实现3D滑动旋转效果的方法
- WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放、图片立体轮播、图片倒影立体滚动)效果实现
- 实现Div的3D图片的360度旋转-岳瑞涛
- Android自定义ImageView实现图片缩放滑动,双击放大缩小,多点触控旋转,圆角矩形,圆形和仿刮刮卡效果
- iOS用三个手势和仿射变换实现图片的旋转缩放移动效果(类iBooks教科书)