forked from: 001:forked from: [PV3D] サンプル2 (3Dのアニメーション)

by nabe forked from 001:forked from: [PV3D] サンプル2 (3Dのアニメーション) (diff: 43)
Zalman display 用にInterlaced Horizontalしてみたかったんだけどなあ
♥0 | Line 82 | Modified 2010-01-29 20:31:44 | MIT License
play

ActionScript3 source code

/**
 * Copyright nabe ( http://wonderfl.net/user/nabe )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/dqEy
 */

// forked from umhr's 001:forked from: [PV3D] サンプル2 (3Dのアニメーション) 
// Zalman display 用にInterlaced Horizontalしてみたかったんだけどなあ
package {
	import flash.display.Graphics;
	import flash.display.Sprite;
	import flash.events.Event;
	
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.geom.ColorTransform;
	import flash.geom.Rectangle;
	import flash.geom.Point;

	[SWF(backgroundColor="0x000000")]
	public class Main extends Sprite{
		private var _red:Sample2;
		private var _blue:Sample2;
		private var _bitmapData:BitmapData;
private var _mask1:Sprite;
private var _mask2:Sprite;
		public function Main(){
			_red = new Sample2(-50);
			this.addChild(_red);
			_blue = new Sample2(50);
			this.addChild(_blue);

_mask1 = new MyMask(stage);
_mask2 = new MyMask(stage);

			_bitmapData = new BitmapData(stage.stageWidth,stage.stageHeight,false,0x000000);
			addChild(new Bitmap(_bitmapData));
			addEventListener(Event.ENTER_FRAME, loop);
		}
		
		private function loop(e:Event):void {
			_red.loop(null);
			_blue.loop(null);
			
			_bitmapData.lock();
			_bitmapData.fillRect(new Rectangle(0,0,stage.stageWidth,stage.stageHeight), 0x000000);
_mask1.y = 1;
_red.mask = _mask1;
			_bitmapData.draw(_red, null, null, "normal");
_mask2.y = 0;
_blue.mask = _mask2;
			_bitmapData.draw(_blue, null,null, "normal");
			_bitmapData.unlock();
		}
		
	}
}

import flash.events.Event;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.view.BasicView;

	import flash.display.Graphics;
	import flash.display.Sprite;
	import flash.display.Stage;
	import flash.events.Event;
	
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.geom.ColorTransform;
	import flash.geom.Rectangle;
	import flash.geom.Point;

class MyMask extends Sprite {
	public function MyMask(stage:Stage):void {
	var _g:Graphics;
//return;
var _w:int = stage.stageWidth;
var _y:int;
_g = this.graphics;
_g.beginFill(0xFFFFFF);
for (_y = stage.stageHeight; _y >= 0; _y -= 2) {
_g.drawRect(0,_y,_w,1);
}
_g.endFill();
	}
}

class Sample2 extends BasicView {
	private var sphere:Sphere; // 球面のインスタンス
	public function Sample2(dX:Number):void {
		// マテリアルを作成
		var material:WireframeMaterial = new WireframeMaterial(0xFFFFFF);
		
		// 3Dオブジェクトを作成
		sphere = new Sphere(material, 300, 10, 10);
		sphere.x = -dX/6;
		camera.x = dX;
		// 3Dシーンに追加して、表示させる
		scene.addChild(sphere);
		
		// レンダリングを開始
		startRendering();
		
		// エンターフレームを設定
		//addEventListener(Event.ENTER_FRAME, loop);
	}
	
	public function loop(e:Event):void {
		// 球面をY軸方向に回転
		sphere.rotationY += 1;
	}
}