📄 extendedconcrete.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 + -