<pre name="code" class="html">package
{
import com.greensock.TweenLite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.Event;
import away3d.containers.View3D;
import away3d.entities.Mesh;
import away3d.materials.ColorMaterial;
import away3d.materials.TextureMaterial;
import away3d.primitives.CubeGeometry;
import away3d.textures.BitmapTexture;
import away3d.utils.Cast;
import crawlingtosea.algorithms.bitmap.Slice;
import crawlingtosea.events.LoaderEvent;
import crawlingtosea.loaders.LoaderBitmap;
import crawlingtosea.loaders.LoaderBitmapQueue;
import crawlingtosea.methods.BitmapCombine;
public class awaytest extends Sprite
{
//private var view:View3D;
private var loader:LoaderBitmapQueue;
private var bitmapAdress:Array=["asset/p1.jpg","asset/p2.jpg","asset/p512.jpg","asset/p1024.jpg"];
private var cube:Mesh;
private var view:View3D;
private var cubeArr:Array;
public function awaytest()
{
//范例:
view = new View3D();
view.z = 100;
view.x=-100;
view.y=100;
//View3D实例必须被添加到舞台上才能正确生效
view.backgroundColor=0xffffff;
view.antiAlias=8;
stage.addChild(view);
view.width=stage.width;
view.height=stage.height;
//创建一个长宽高都为500的立方体数据
/*var cubeGeometry:CubeGeometry = new CubeGeometry(500, 500, 500);
//创建一个单色的贴图(材质)
var cubeMaterial:ColorMaterial = new ColorMaterial(0xFF0000);
//创建一个可视的Mesh对象,并设置形状数据和贴图
var cubeMesh:Mesh = new Mesh(cubeGeometry, cubeMaterial);
//将mesh添加到舞台上
view.scene.addChild(cubeMesh);
//移动风景中的物体
//cubemesh.z += 100;
//移动镜头,或是说移动你的眼睛....
view.z = 100;
*/
//initCube(null);
loader=new LoaderBitmapQueue(bitmapAdress);
loader.start();
loader.addEventListener(LoaderEvent.QUEUELOADER_COMPLETED,onQueue);
}
protected function onQueue(event:LoaderEvent):void
{
// TODO Auto-generated method stub
var bitmap4Data:Array=loader.queueData;
var slice_img1:Slice=new Slice(bitmap4Data[0]);
var slice_img2:Slice=new Slice(bitmap4Data[1]);
var slice_img3:Slice=new Slice(bitmap4Data[2]);
var slice_img4:Slice=new Slice(bitmap4Data[3]);
slice_img1.startAISlice(3,4);
slice_img2.startAISlice(3,4);
slice_img3.startAISlice(3,4);
slice_img4.startAISlice(3,4);
var bddata:Array=[];
for(var r:int=0;r<12;r++){
bddata.push(new Array);
}
for(var k:int=0;k<12;k++){
bddata[k].push(slice_img4.bitmapDataArray[k]);
bddata[k].push(slice_img2.bitmapDataArray[k]);
bddata[k].push(slice_img1.bitmapDataArray[k]);
bddata[k].push(slice_img2.bitmapDataArray[k]);
bddata[k].push(slice_img3.bitmapDataArray[k]);
bddata[k].push(slice_img4.bitmapDataArray[k]);
}
var bcArr:Array=[];
for(var q:int=0;q<12;q++){
bcArr.push(new BitmapCombine(256,256));
}
var bitmapCombineData:Array=[];
for(var p:int=0;p<12;p++){
BitmapCombine(bcArr[p]).combine(bddata[p]);
bitmapCombineData.push(BitmapCombine(bcArr[p]).bitmapData);
}
cubeArr=[];
for(var b:int=0;b<12;b++)
{
cubeArr.push(new Mesh(new CubeGeometry(256,256,256),new TextureMaterial(Cast.bitmapTexture(bitmapCombineData[b]))));
}
//排列坐标
for(var m:int=0;m<3;m++)
{
for(var n:int=0;n<4;n++)
{
trace(n+m*3);
var p=n+m*3;
var t=11-(n+m*3);
cubeArr[p].x=n*256;
cubeArr[t].y=m*256;
view.scene.addChild(cubeArr[n+m*4]);
}
}
stage.addEventListener(Event.ENTER_FRAME,update);
//var b1:BitmapCombine=new BitmapCombine(256,256);
//b1.combine(b1data);
//initCube(b1.bitmapData);
//addChild(new Bitmap(b1.bitmapData));
//trace(b1.bitmapData.height);
}
protected function initCube(bd:BitmapData):void{
var cubeData:CubeGeometry=new CubeGeometry(32,32,32,1,1,1,true);
var bitmapMaterial:TextureMaterial=new TextureMaterial(new BitmapTexture(bd));
cube=new Mesh(cubeData,bitmapMaterial);
trace("here");
view.scene.addChild(cube);
stage.addEventListener(Event.ENTER_FRAME,update);
}
protected function loadCompleted(event:LoaderEvent):void
{
// TODO Auto-generated method stub
//var cubeData:CubeGeometry=new CubeGeometry(400,400,400,1,1,1,true);
//var bitmapMaterial:TextureMaterial=new TextureMaterial(Cast.bitmapTexture(event.target.data));
//cube=new Mesh(cubeData,bitmapMaterial);
//view.scene.addChild(cube);
//var bc:BitmapCombine=new BitmapCombine(256,256);
//var slice:Slice=new Slice(loader.bitmapData);
//slice.startAISlice(3,2);
// bc.combine(slice.bitmapDataArray);
// var bt:Bitmap=new Bitmap(bc.bitmapData);
//addChild(bt);
//stage.addEventListener(Event.ENTER_FRAME,update);
}
protected function update(event:Event):void
{
// TODO Auto-generated method stub
view.render();
//cube.rotationY++;
for(var i:int=0;i<cubeArr.length;i++){
//TweenLite.to(cubeArr[i],3,{z:1000});
cubeArr[i].rotationY++;
}
}
}
}