⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extendedconcrete.as

📁 Papervision3d的源码
💻 AS
字号:
/**
 * Paperskated3d - simple skateboard simulator in Papervision3d
 * 
 * @author Bartek Drozdz 
 * @version 1.0
 * 
 * Released under Creative Commons Attribution-Non-Commercial-Share Alike 3.0 License.
 */
package com.paperskate3d.terrain {
	
	import com.everydayflash.bitmap.ScrollBitmapData;
	import com.paperskate3d.skate.SkateBoard;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.display.BlendMode;
	import flash.events.Event;
	import flash.geom.Matrix;
	import org.papervision3d.core.proto.MaterialObject3D;
	import org.papervision3d.materials.BitmapMaterial;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.objects.primitives.Plane;
	
	import com.carlcalderon.arthropod.Debug;
	
	public class ExtendedConcrete extends Plane implements ITerrain {
		
		private var size:int = 750;
		
		[Embed(source = '../../../../assets/concrete-375.jpg')]
		private var Concrete:Class;
		private var concrete:ScrollBitmapData;
		private var concreteHolder:Bitmap;
		
		[Embed(source='../../../../assets/conrete-mask.jpg')]
		private var ConcreteMask:Class;
		private var concreteMask:Bitmap;
		
		[Embed(source = '../../../../assets/shadow.jpg')]
		private var Shadow:Class;
		private var shadow:Sprite;
		
		private var composition:Sprite;
		private var texture:BitmapData;
		
		public function ExtendedConcrete() {
			concrete = new ScrollBitmapData(375, 375);
			concrete.setSource((new Concrete() as Bitmap).bitmapData);
			concreteHolder = new Bitmap(concrete);
			var m:Matrix = new Matrix();
			m.scale(2, 2);
			concreteHolder.transform.matrix = m;
			
			concreteMask = (new ConcreteMask() as Bitmap);
			concreteMask.blendMode = BlendMode.MULTIPLY;
			var m2:Matrix = new Matrix();
			m2.scale(1.25, 1.25);
			concreteMask.transform.matrix = m2;
			
			shadow = new Sprite();
			var shadowBmp:Bitmap = new Shadow();
			shadowBmp.x = -82;
			shadowBmp.y = -256; 
			shadow.addChild(shadowBmp);
			shadow.x = size / 2;
			shadow.y = size / 2;
			shadow.blendMode = BlendMode.MULTIPLY;
			
			composition = new Sprite();
			composition.addChild(concreteHolder);
			composition.addChild(concreteMask);
			composition.addChild(shadow);
			
			texture = new BitmapData(size, size);
			move(0);
			
			var mat:MaterialObject3D = new BitmapMaterial(texture);
			//super(mat, 600, 600, 22, 22);
			super(mat, size, size, 23, 23);
			rotationX = -90;
			y = -52;
		}

		public function updateShadow(skate:SkateBoard):void {
			var d:Number = Math.min(500, skate.y);
			shadow.alpha = Math.min(1, 1 - d / 1000);
			shadow.rotation = -skate.internalRotationZ;
			if (skate.internalRotationX != 0) {
				if(skate.internalRotationZ %360 == 0) shadow.rotation = -skate.internalRotationX;
				else if(skate.internalRotationZ % 360 == 180) shadow.rotation = skate.internalRotationX;
			}
			
			var s:Number = Math.abs(skate.internalRotationY % 360);
			s = Math.abs(s - 180);
			s = s / 180;
			shadow.scaleX = .8 + s * .2;
		}
		
		public function resetShadow():void {
			shadow.alpha = 1
			shadow.rotation = 0;
			shadow.x = size / 2;
		}
		
		public function move(speed:Number):void {
			concrete.scrollBy(0, speed/2);
			texture.draw(composition);
		}
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -