每年聖誕前夕都會十分忙碌,今年亦不例外。
package
{
import flash.events.Event;
import flash.utils.Timer;
import flash.events.TimerEvent;
import gs.TweenMax;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.view.BasicView;
public class Main extends BasicView
{
private var cube:Cube;
private var time:Timer = new Timer(2000);
private var value:int = 0;
public function Main()
{
super(800, 500);
camera.focus = 100;
camera.zoom = 10;
var matlist:MaterialsList = new MaterialsList();
var face = new Array("back", "right", "front", "left", "top", "bottom");
//var filemat:BitmapFileMaterial = new BitmapFileMaterial("photo1.jpg", true);
for (var i:int = 0; i < 6; i++)
{
var filemat:BitmapFileMaterial = new BitmapFileMaterial("photo" + i + ".jpg", true);
matlist.addMaterial(filemat, face[i]);
}
cube = new Cube(matlist, 800, 800, 500) ;
cube.z = 400;
scene.addChild(cube);
time.addEventListener(TimerEvent.TIMER, ontime);
time.start();
startRendering();
}
private function ontime(e:TimerEvent):void
{
value += 90%360;
TweenMax.to(cube, 1, { rotationY:value } );
}
}
}
package
{
import flash.events.Event;
import flash.filters.BlurFilter;
import org.papervision3d.core.effects.view.ReflectionView;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.objects.primitives.Plane;
public class ReflectionExample extends ReflectionView{
private var container : DisplayObject3D;
private var plane : Plane;
private var box : Cube;
private var box2 : Cube;
private var matlist : MaterialsList;
public function ReflectionExample() {
init();
}
private function init() {
// relection setting
surfaceHeight = -300;
viewportReflection.filters = [new BlurFilter(4, 4, 8)];
//create material
var planeMat : ColorMaterial = new ColorMaterial(Math.random() * 0xFFFFFF);
planeMat.doubleSided = true;
matlist = new MaterialsList();
var face = new Array("back", "right", "front", "left", "top", "bottom");
for (var i:int = 0; i < 6; i++)
{
var colorMat : ColorMaterial= new ColorMaterial(Math.random()*0xFFFFFF);
matlist.addMaterial(colorMat, face[i]);
}
//create object
box = new Cube (matlist, 300, 300, 300);
box2 = new Cube (matlist, 300, 300, 300);
box.moveRight(300);
box2.moveLeft(300);
container = new DisplayObject3D();
container.addChild(box);
container.addChild(box2);
scene.addChild(container);
addEventListener(Event.ENTER_FRAME, onenterframe);
}
private function onenterframe (e:Event):void {
box.yaw(3);
box2.yaw(-3);
singleRender();
}
}
}
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.utils.Timer;
import flash.events.TimerEvent;
import gs.TweenMax;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
import org.papervision3d.objects.primitives.PaperPlane;
public class Paper3D extends Sprite
{
private var total:int;
private var viewport:Viewport3D;
private var scene:Scene3D;
private var camera:Camera3D;
private var render:BasicRenderEngine;
private var light: PointLight3D;
private var light2: PointLight3D;
private var mat:FlatShadeMaterial;
private var container:DisplayObject3D;
private var num:int;
private var primitives:PaperPlane;
private var objArray:Array;
private var time:Timer;
public function Paper3D():void
{
total=100;
objArray=new Array ;
viewport=new Viewport3D(800,500,false,true);
addChild(viewport);
scene = new Scene3D ;
light = new PointLight3D;
light2 = new PointLight3D;
light.moveUp(100);
light2.moveDown(100);
camera = new Camera3D ;
render = new BasicRenderEngine ;
container = new DisplayObject3D;
time = new Timer(3000);
time.addEventListener(TimerEvent.TIMER, cameraRun);
time.start();
for (var i:int=0; i<total; i++)
{
mat = new FlatShadeMaterial(light,Math.random()*0xFFFFFF)
primitives = new PaperPlane(mat);
primitives.yaw(180);
scene.addChild(primitives);
primitives.x=Math.random()*3000-1500;
primitives.y=Math.random()*2000-1000;
primitives.z = Math.random() * 3000 - 1500;
primitives.scale = (Math.random() * 2) + 0.5;
objArray.push(primitives);
}
camera.target = container;
addEventListener(Event.ENTER_FRAME, run);
}
function cameraRun(e:TimerEvent):void
{
num = Math.random() * total;
TweenMax.to (camera, 5, { x:Math.random() * 1000, y:Math.random() * 1000, z:Math.random() * 1000 } );
TweenMax.to (light, 10 , { x:Math.random() * 1000, y:Math.random() * 1000, z:Math.random() * 1000 } );
TweenMax.to (light2, 6 , { x:Math.random() * 1000, y:Math.random() * 1000, z:Math.random() * 1000 } );
camera.target = objArray[num];
}
function run(e:Event):void
{
//for (var j:int; j<total; j++)
//{
//objArray[j].z-=10;
//}
render.renderScene(scene,camera,viewport);
}
}
}
package
{
import flash.events.Event;
import org.papervision3d.events.FileLoadEvent;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.special.DAEMC2;
import org.papervision3d.view.BasicView;
public class daemc_main extends BasicView
{
var model:DAEMC2;
public function daemc_main ()
{
model = new DAEMC2(false,null,0);
//var material:BitmapFileMaterial = new BitmapFileMaterial("grey_checker.jpg",true);
// material.doubleSided = true;
//model.load ("robot.dae", new MaterialsList ( { lambert2:material } ));
model.load ("robot.dae");
model.scale = 60;
model.addEventListener (FileLoadEvent.ANIMATIONS_COMPLETE, addit2Stage);
model.yaw(180);
startRendering ();
}
private function addit2Stage (e:FileLoadEvent):void
{
trace(model.totalFrames);
scene.addChild (model);
model.currentFrameNumber = 1;
model.play ();
//model.inReverse = true;
//model.addFrameScript (10, toDo);
}
override protected function onRenderTick(event:Event = null):void
{
super.onRenderTick(event);
model.yaw(0.1);
}
private function toDo ():void
{
model.stop();
trace (model.currentFrameNumber);
}
}
}
import gs.TweenMax;
var displayAreaWidth: int = 700;
var displayAreaHeight: int = 400;
var ui:MovieClip = ui;
var maskMc:MovieClip = ui.maskMc;
var contentMc:MovieClip = ui.contentMc;
var tracker:MovieClip = ui.scrollbarMc.scrollTrackerMc;
var track:MovieClip = ui.scrollbarMc.scrollTrackMc;
var scrollbarMc:MovieClip = ui.scrollbarMc;
var contentBg:MovieClip = ui.contentBg;
track.height = displayAreaHeight;
contentBg.width = displayAreaWidth;
contentBg.height = displayAreaHeight;
maskMc.x = maskMc.y =0;
maskMc.width = displayAreaWidth;
maskMc.height = displayAreaHeight;
scrollbarMc.x = displayAreaWidth;
scrollbarMc.y = 0;
scrollbarMc.width = 15;
var rect:Rectangle = new Rectangle(track.x,track.y,track.x,track.height - tracker.height);
var speed:Number = 20;
var rate:Number =( contentMc.height - maskMc.height) / (track.height - tracker.height);
if(contentMc.height > displayAreaHeight ) init();
else maskMc.visible = false, scrollbarMc.visible = false;
function init ():void
{
tracker.buttonMode = true;
contentMc.mask = maskMc;
tracker.addEventListener (MouseEvent.MOUSE_DOWN,onMouseDownTracker);
stage.addEventListener (MouseEvent.MOUSE_UP,onMouseUpTracker);
track.addEventListener ( MouseEvent.MOUSE_DOWN,onMouseDownTrack);
contentMc.addEventListener(MouseEvent.MOUSE_WHEEL,onMouseWheelHandle);
}
function moveContent (e:Event):void
{
TweenMax.to (contentMc, 1 ,{y:tracker.y * -rate});
}
function onMouseDownTracker (e:MouseEvent):void
{
e.target.startDrag (false,rect);
stage.addEventListener (Event.ENTER_FRAME,moveContent);
}
function onMouseUpTracker (e:MouseEvent):void
{
stopDrag ();
stage.removeEventListener (Event.ENTER_FRAME,moveContent);
}
function onMouseDownTrack (e:MouseEvent):void
{
var dy:Number = mouseY - ui.y - tracker.height;
if (dy > rect.height - tracker.height) dy = rect.height;
if (dy < tracker.height ) dy = rect.y;
//trace([dy, rect.height]);
TweenMax.to (tracker,1,{y:dy});
TweenMax.to (contentMc, 1 ,{y:dy * -rate});
}
function onMouseWheelHandle (e:MouseEvent):void
{
var upDown :int = Math.abs(e.delta)/e.delta;
var step = speed * upDown;
if(tracker.y > rect.height + step) tracker.y = rect.height + step;
else if (tracker.y < step ) tracker.y = step;
tracker.y -=step;
TweenMax.to (contentMc, 1 ,{y:tracker.y * -rate});
}
package
{
import flash.display.Sprite;
import flash.geom.Rectangle;
import flash.events.MouseEvent;
import flash.events.Event;
public class ThrowBall extends Sprite
{
private var radius : int = 15;
private var rect : Rectangle = new Rectangle(0+radius, 0+radius, 800-radius, 500-radius);
private var ball : Sprite;
private var currentX:Number;
private var currentY:Number;
private var lastX:Number;
private var lastY:Number;
private var drag :Boolean = false;
private var vx : Number = 0;
private var vy : Number = 0;
private var tempWall : Sprite;
public function ThrowBall()
{
createBall();
createWall();
stage.addEventListener(Event.ENTER_FRAME, onenterframe);
stage.addEventListener(MouseEvent.MOUSE_UP, onmouseup);
}
private function createBall() :void {
ball = new Sprite();
ball.graphics.beginFill(0xFF0000);
ball.graphics.drawCircle(0, 0, radius);
ball.graphics.endFill();
ball.buttonMode = true;
ball.x = rect.width / 2 + radius/2;
ball.y = rect.height / 2 + radius/2;
ball.addEventListener(MouseEvent.MOUSE_DOWN, onmousedown);
addChild(ball);
}
private function onmousedown (e:MouseEvent):void {
ball.startDrag(false, rect);
drag = true;
}
private function onmouseup(e:MouseEvent):void {
ball.stopDrag();
drag = false;
}
private function onenterframe(e:Event):void {
if (drag) {
lastX = currentX;
lastY = currentY;
currentX = mouseX;
currentY = mouseY;
vx = currentX - lastX;
vy = currentY - lastY;
}
else {
ball.x += vx;
ball.y += vy;
}
if (ball.x <= rect.x+radius)
{
ball.x = rect.x+radius;
vx *= -1;
}
else if (ball.x >= rect.width-radius)
{
ball.x = rect.width-radius;
vx *= -1;
}
else if (ball.y >= rect.height-radius)
{
ball.y = rect.height - radius;
vy *= -1;
}
else if (ball.y <=rect.y+radius)
{
ball.y = rect.y+radius;
vy *= -1;
}
vx *= 0.95;
vy *= 0.95;
}
private function createWall():void {
for (var i = 0; i < 2; i++)
{
var wall :Sprite = new Sprite ();
wall.graphics.beginFill(0xFF0000);
wall.graphics.drawRect(0, 0, 800, radius);
wall.graphics.endFill();
if ( i == 1 ) wall.y = 500 - radius;
addChild(wall);
}
for (var j = 0; j < 2; j++)
{
var sideWall :Sprite = new Sprite();
sideWall.graphics.beginFill(0xFF0000);
sideWall.graphics.drawRect(0, 0, radius, 500);
sideWall.graphics.endFill();
if ( j == 1 ) sideWall.x = 800 - radius;
addChild(sideWall);
}
}
}
}
import gs.TweenMax;
var col:int = 32;
var i:int = 0;
var total:uint=50;
var time:Timer = new Timer(100);
time.addEventListener(TimerEvent.TIMER,createBox);
time.start();
function createBox(e:TimerEvent) {
var mc:Sprite= new Sprite();
var color:Number = Math.random()*0xFFFFFF;
var size :int= 20;
with (mc) {
graphics.beginFill(color);
graphics.lineStyle(0, 0xFFFFFF);
graphics.drawRect(0, 0, size, size);
graphics.endFill();
x = 0;
y = 0;
rotation=-270;
}
addChild(mc);
var dx:int=(i%col)*25;
var dy:int=((i-i%col)/col)*25;
TweenMax.to(mc,1,{x:dx,y:dy,rotation:0});
if (dy>=500) {
time.stop();
removeEventListener(TimerEvent.TIMER,createBox);
} else {
i++;
}
}
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.Math.*;
var hk-marketing-campaign:Timer=new Timer(500);
var b2world:b2World;
init();
function init()
{
// create b2AABB
var environment:b2AABB = new b2AABB();
environment.lowerBound.Set(-100.0,-100.0);
environment.upperBound.Set(100.0,100.0);
// create b2Vec2
var gravity:b2Vec2=new b2Vec2(0.0,50.0);
var canISleep:Boolean=false;
// create b2World
b2world=new b2World(environment,gravity,canISleep);
// create b2DebugDraw
var debugDraw:b2DebugDraw = new b2DebugDraw();
var debug_sprite:Sprite = new Sprite();
addChild(debug_sprite);
with (debugDraw)
{
m_sprite=debug_sprite;
m_drawScale=30;
m_fillAlpha=0.5;
m_lineThickness=1;
m_drawFlags=b2DebugDraw.e_shapeBit;
}
b2world.SetDebugDraw(debugDraw);
// create b2BodyDef
var bodyDef:b2BodyDef;
bodyDef=new b2BodyDef();
bodyDef.position.Set(14,14);
//create b2PolygonDef
var box:b2PolygonDef;
box=new b2PolygonDef();
with (box)
{
SetAsBox(500/60,20/60);
friction=0.3;
density=0;
}
// create b2Body
var body:b2Body;
body=b2world.CreateBody(bodyDef);
body.CreateShape(box);
body.SetMassFromShapes();
addEventListener(Event.ENTER_FRAME,enterFrameHandler);
hk-marketing-campaign.addEventListener(TimerEvent.TIMER, timeHandler);
hk-marketing-campaign.start();
}
function timeHandler(e:Event)
{
// create b2BodyDef
var bodyDef:b2BodyDef;
bodyDef=new b2BodyDef();
bodyDef.position.Set(Math.random()*10+7,-1);
// create b2PolygonDef
var box:b2PolygonDef;
box=new b2PolygonDef();
with (box)
{
var num:Number=Math.random()*1+0.3;
SetAsBox(num,num);
friction=0.3;
density=1;
}
// create b2Body
var body:b2Body;
body=b2world.CreateBody(bodyDef);
body.CreateShape(box);
body.SetMassFromShapes();
}
function enterFrameHandler(e:Event)
{
b2world.Step(1/30,10);
}
import gs.TweenMax;
var total:uint=30;
init();
function init()
{
for (var i=0; i<total; i++)
{
createBall(i);
}
}
function createBall(mc)
{
mc = new Shape();
var radius:Number=Math.random()*50+10;
with (mc)
{
graphics.beginFill(Math.random()*0xFFFFFF);
graphics.lineStyle(10, 0xFFFFFF);
graphics.drawCircle(radius, radius, radius);
graphics.endFill();
}
addChild(mc);
var startpointX:Number=Math.random()*700;
var startpointY:Number=500-radius*2;
var topointY:Number=Math.random()*500-radius*4;
TweenMax.to(mc,1,{y:topointY,startAt:{x:startpointX,y:startpointY}, yoyo:true,loop:0});
}
import de.polygonal.ds.Array2;
import de.polygonal.ds.Iterator;
import gs.TweenMax;
var total:int;
var col:int;
var row:int;
var selectedbox:Object;
var container:Sprite;
var grid:Array2;
var k:int=0;
var space:int=5;
init();
function init()
{
total=200;
col=20;
row=Math.round(total/col)+1;
grid=new Array2(col,row);
container= new Sprite();
addChild(container);
for (var i :int= 0; i<row; i++)
{
for (var j :int= 0; j<col; j++)
{
var box : Box = new Box();
box.stop();
box.x=j*(box.width+space);
box.y=i*(box.height+space);
box.displayText.text=String(k+1);
box.displayText.mouseEnabled=false;
box.name=String(k);
grid.set(j,i,box);
//trace("j: "+j,"i: "+i)
box.addEventListener(MouseEvent.CLICK,onclick);
container.addChild(box);
if (k>=total-1)
{
var totalW:Number=container.width;
var totalH:Number=container.height;
alignCenter(totalW,totalH);
trace(grid.getArray()[0]);
activeselectbox(grid.getArray()[0]);
return;
}
else
{
k++;
}
}
}
}
function alignCenter(w:Number,h:Number)
{
container.x = (stage.stageWidth-container.width) /2;
container.y = (stage.stageHeight-container.height) /2;
}
function onclick(evt:MouseEvent):void
{
var box:Object=evt.target;
activeselectbox(box);
}
function activeselectbox(box:Object):void
{
var clickbox=box;
if (selectedbox!=clickbox)
{
//trace("selectedbox :"+selectedbox);
selectedbox=box;
//selectedbox.gotoAndStop(2);
TweenMax.to(selectedbox,1,{alpha:1});
selectedbox.buttonMode=false;
var iterator:Iterator=grid.getIterator();
iterator.start();
while (iterator.hasNext())
{
var mybox=iterator.data;
if (mybox!=null)
{
//trace(iterator.data.name);
if (mybox!=selectedbox)
{
//mybox.gotoAndStop(1);
mybox.buttonMode=true;
TweenMax.to(mybox,1,{alpha:(Math.random()*0.5)+0.1});
}
}
iterator.next();
}
}
}