[練習]数字のカウント(コードが無駄に長い…)
[メモ]
papervision3Dの練習
とりあえず書いた感じです
もっとコードをスマートにしたい…
forの使い方の理解が不十分だと痛感しました~
♥0 |
Line 279 |
Modified 2010-08-14 11:32:11 |
MIT License
archived:2017-03-20 12:10:05
ActionScript3 source code
/**
* Copyright Tamanegi_kenshi ( http://wonderfl.net/user/Tamanegi_kenshi )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/a9v9
*/
//[メモ]
//papervision3Dの練習
//とりあえず書いた感じです
//もっとコードをスマートにしたい…
//forの使い方の理解が不十分だと痛感しました~
package {
import flash.events.Event;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.core.proto.CameraObject3D;
// import caurina.transitions.Tweener;
[SWF(backgroundColor="#000000")]
public class FlashTest extends Sprite {
private var camera:Camera3D;
private var scene:Scene3D;
private var viewport:Viewport3D;
private var renderer:BasicRenderEngine;
private var angleX:Number = 0;
private var angleY:Number = 0;
private var cubeArr:Array = [];
private var planeArr:Array = []
private var planeS:Array = [0, 1, 0];
// private var cubeX:Array = [];
// private var cubeY:Array = [];
// private var cubeZ:Array = [];
//1
private var scale1:Array = [];
//2
private var scale2:Array = [];
//3
private var scale3:Array = [];
//4
private var scale4:Array = [];
//5
private var scale5:Array = [];
//6
private var scale6:Array = [];
//7
private var scale7:Array = [];
//8
private var scale8:Array = [];
//9
private var scale9:Array = [];
//0
private var scale0:Array = [];
private var isCube:Boolean = true;
private var num:int = 0;
public function FlashTest() {
init();
}//FlashTest
private function init():void{
camera = new Camera3D();
camera.z = -500;
//camera.zoom = 50;
scene = new Scene3D();
viewport = new Viewport3D(465, 465);
renderer = new BasicRenderEngine();
addChild(viewport);
//移動前のオブジェクト情報
for(var i:int = 0; i < 3; i++){
//for(var j:int = 0; j < 2; j++){
for(var k:int = 0; k < 5; k++){
var mate:ColorMaterial = new ColorMaterial(0xffff00, 1);
var materials:MaterialsList = new MaterialsList({all : mate});
var cube:Cube = new Cube(materials, 50, 50, 50);
scene.addChild(cube);
cube.x = -50 + i * 50;
// cubeX.push(cube.x);
//cube.z = 0;//-50 + j * 50;
//cubeZ.push(cube.z);
cube.y = -150 + k * 50;
// cubeY.push(cube.y);
camera.y = 150;
camera.rotationX = 15;
cubeArr.push(cube);
}//for k
// }//for j
}//for i
//移動後のオブジェクト情報
//1
for(var s1:int = 0; s1 < cubeArr.length; s1++){
if(s1 == 5 || s1 == 6 || s1 == 7 || s1 == 8 || s1 == 9){
scale1[s1] = 1;
} else {
scale1[s1] = 0;
}
}
//2
for(var s2:int = 0; s2 < cubeArr.length; s2++){
if(s2 == 3 || s2 == 6 || s2 == 8 || s2 == 11){
scale2[s2] = 0;
} else {
scale2[s2] = 1;
}
}
//3
for(var s3:int = 0; s3 < cubeArr.length; s3++){
if(s3 == 1 || s3 == 3 || s3 == 6 || s3 == 8){
scale3[s3] = 0;
} else {
scale3[s3] = 1;
}
}
//4
for(var s4:int = 0; s4 < cubeArr.length; s4++){
if(s4 == 0 || s4 == 1 || s4 == 5 || s4 == 6 || s4 == 8 || s4 == 9){
scale4[s4] = 0;
} else {
scale4[s4] = 1;
}
}
//5
for(var s5:int = 0; s5 < cubeArr.length; s5++){
if(s5 == 1 || s5 == 6 || s5 == 8 || s5 == 13){
scale5[s5] = 0;
} else {
scale5[s5] = 1;
}
}
//6
for(var s6:int = 0; s6 < cubeArr.length; s6++){
if(s6 == 6 || s6 == 8 || s6 == 13){
scale6[s6] = 0;
} else {
scale6[s6] = 1;
}
}
//7
for(var s7:int = 0; s7 < cubeArr.length; s7++){
if(s7 == 0 || s7 == 1 || s7 == 2 || s7 == 5 || s7 == 6 || s7 == 7 || s7 == 8){
scale7[s7] = 0;
} else {
scale7[s7] = 1;
}
}
//8
for(var s8:int = 0; s8 < cubeArr.length; s8++){
if(s8 == 6 || s8 == 8){
scale8[s8] = 0;
} else {
scale8[s8] = 1;
}
}
//9
for(var s9:int = 0; s9 < cubeArr.length; s9++){
if(s9 == 1 ||s9 == 6 || s9 == 8){
scale9[s9] = 0;
} else {
scale9[s9] = 1;
}
}
//0
for(var s0:int = 0; s0 < cubeArr.length; s0++){
if(s0 == 6 || s0 == 7 || s0 == 8){
scale0[s0] = 0;
} else {
scale0[s0] = 1;
}
}
for(var h:int = 0; h < 3; h++){
var mate2:ColorMaterial = new ColorMaterial(0x333333);
var plane:Plane = new Plane(mate2, 50, 50);
scene.addChild(plane);
plane.rotationX = 90 ;
plane.x = -50 + h * 50;
plane.y = -300;
planeArr.push(plane);
}
var myTimer:Timer = new Timer(1000, 0);
myTimer.addEventListener(TimerEvent.TIMER, onTimer);
myTimer.start();
addEventListener(Event.ENTER_FRAME, onEnter);
}//init
private function onTimer(event:TimerEvent):void{
if(num == 0){
removeEventListener(Event.ENTER_FRAME, on0);
addEventListener(Event.ENTER_FRAME, on1);
num = 1;
} else if(num == 1){
removeEventListener(Event.ENTER_FRAME, on1);
addEventListener(Event.ENTER_FRAME, on2);
num = 2;
} else if(num == 2){
removeEventListener(Event.ENTER_FRAME, on2);
addEventListener(Event.ENTER_FRAME, on3);
num = 3;
} else if(num == 3){
removeEventListener(Event.ENTER_FRAME, on3);
addEventListener(Event.ENTER_FRAME, on4);
num = 4;
} else if(num == 4){
removeEventListener(Event.ENTER_FRAME, on4);
addEventListener(Event.ENTER_FRAME, on5);
num = 5;
} else if(num == 5){
removeEventListener(Event.ENTER_FRAME, on5);
addEventListener(Event.ENTER_FRAME, on6);
num = 6;
} else if(num == 6){
removeEventListener(Event.ENTER_FRAME, on6);
addEventListener(Event.ENTER_FRAME, on7);
num = 7;
} else if(num == 7){
removeEventListener(Event.ENTER_FRAME, on7);
addEventListener(Event.ENTER_FRAME, on8);
num = 8;
} else if(num == 8){
removeEventListener(Event.ENTER_FRAME, on8);
addEventListener(Event.ENTER_FRAME, on9);
num = 9;
} else if(num == 9){
removeEventListener(Event.ENTER_FRAME, on9);
addEventListener(Event.ENTER_FRAME, on0);
num = 0;
}//if
}//onTimer
// 1を作る
private function on1(event:Event):void{
for(var i:int = 0; i < cubeArr.length; i++){
var vx:Number = (scale1[i] - cubeArr[i].scaleX) * 0.3;
cubeArr[i].scaleX += vx;
var vz:Number = (scale1[i] - cubeArr[i].scaleZ) * 0.3;
cubeArr[i].scaleZ += vz;
var vy:Number = (scale1[i] - cubeArr[i].scaleY) * 0.3;
cubeArr[i].scaleY += vy;
}//for i
for(var iP:int = 0; iP < 3; iP++){
var px:Number = (planeS[iP] - planeArr[iP].scaleX) * 0.3;
planeArr[iP].scaleX += px;
var py:Number = (planeS[iP] - planeArr[iP].scaleY) * 0.3;
planeArr[iP].scaleY += py;
}//for iP
}//on1
// 2を作る
private function on2(event:Event):void{
for(var i2:int = 0; i2 < cubeArr.length; i2++){
var vxEn:Number = (scale2[i2] - cubeArr[i2].scaleX) * 0.3;
cubeArr[i2].scaleX += vxEn;
var vzEn:Number = (scale2[i2] - cubeArr[i2].scaleZ) * 0.3;
cubeArr[i2].scaleZ += vzEn;
var vyEn:Number = (scale2[i2] - cubeArr[i2].scaleY) * 0.3;
cubeArr[i2].scaleY += vyEn;
}//for i
for(var iP2:int = 0; iP2 < 3; iP2++){
var px:Number = (1 - planeArr[iP2].scaleX) * 0.3;
planeArr[iP2].scaleX += px;
var py:Number = (1 - planeArr[iP2].scaleY) * 0.3;
planeArr[iP2].scaleY += py;
}//for iP
}//on2
// 3を作る
private function on3(event:Event):void{
for(var i3:int = 0; i3 < cubeArr.length; i3++){
var vxEn:Number = (scale3[i3] - cubeArr[i3].scaleX) * 0.3;
cubeArr[i3].scaleX += vxEn;
var vzEn:Number = (scale3[i3] - cubeArr[i3].scaleZ) * 0.3;
cubeArr[i3].scaleZ += vzEn;
var vyEn:Number = (scale3[i3] - cubeArr[i3].scaleY) * 0.3;
cubeArr[i3].scaleY += vyEn;
}//for i
}//on2
// 4を作る
private function on4(event:Event):void{
for(var i4:int = 0; i4 < cubeArr.length; i4++){
var vxEn:Number = (scale4[i4] - cubeArr[i4].scaleX) * 0.3;
cubeArr[i4].scaleX += vxEn;
var vzEn:Number = (scale4[i4] - cubeArr[i4].scaleZ) * 0.3;
cubeArr[i4].scaleZ += vzEn;
var vyEn:Number = (scale4[i4] - cubeArr[i4].scaleY) * 0.3;
cubeArr[i4].scaleY += vyEn;
}//for i
}//on2
// 5を作る
private function on5(event:Event):void{
for(var i5:int = 0; i5 < cubeArr.length; i5++){
var vxEn:Number = (scale5[i5] - cubeArr[i5].scaleX) * 0.3;
cubeArr[i5].scaleX += vxEn;
var vzEn:Number = (scale5[i5] - cubeArr[i5].scaleZ) * 0.3;
cubeArr[i5].scaleZ += vzEn;
var vyEn:Number = (scale5[i5] - cubeArr[i5].scaleY) * 0.3;
cubeArr[i5].scaleY += vyEn;
}//for i
}//on2
// 6を作る
private function on6(event:Event):void{
for(var i6:int = 0; i6 < cubeArr.length; i6++){
var vxEn:Number = (scale6[i6] - cubeArr[i6].scaleX) * 0.3;
cubeArr[i6].scaleX += vxEn;
var vzEn:Number = (scale6[i6] - cubeArr[i6].scaleZ) * 0.3;
cubeArr[i6].scaleZ += vzEn;
var vyEn:Number = (scale6[i6] - cubeArr[i6].scaleY) * 0.3;
cubeArr[i6].scaleY += vyEn;
}//for i
}//on2 private function onEnter(event:Event):void{
// 7を作る
private function on7(event:Event):void{
for(var i7:int = 0; i7 < cubeArr.length; i7++){
var vxEn:Number = (scale7[i7] - cubeArr[i7].scaleX) * 0.3;
cubeArr[i7].scaleX += vxEn;
var vzEn:Number = (scale7[i7] - cubeArr[i7].scaleZ) * 0.3;
cubeArr[i7].scaleZ += vzEn;
var vyEn:Number = (scale7[i7] - cubeArr[i7].scaleY) * 0.3;
cubeArr[i7].scaleY += vyEn;
}//for i
}//on2 /*
// 8を作る
private function on8(event:Event):void{
for(var i8:int = 0; i8 < cubeArr.length; i8++){
var vxEn:Number = (scale8[i8] - cubeArr[i8].scaleX) * 0.3;
cubeArr[i8].scaleX += vxEn;
var vzEn:Number = (scale8[i8] - cubeArr[i8].scaleZ) * 0.3;
cubeArr[i8].scaleZ += vzEn;
var vyEn:Number = (scale8[i8] - cubeArr[i8].scaleY) * 0.3;
cubeArr[i8].scaleY += vyEn;
}//for i
}//on2 angleX += (232 - mouseX) / 100;
// 9を作る
private function on9(event:Event):void{
for(var i9:int = 0; i9 < cubeArr.length; i9++){
var vxEn:Number = (scale9[i9] - cubeArr[i9].scaleX) * 0.3;
cubeArr[i9].scaleX += vxEn;
var vzEn:Number = (scale9[i9] - cubeArr[i9].scaleZ) * 0.3;
cubeArr[i9].scaleZ += vzEn;
var vyEn:Number = (scale9[i9] - cubeArr[i9].scaleY) * 0.3;
cubeArr[i9].scaleY += vyEn;
}//for i
}//on2
// 0を作る
private function on0(event:Event):void{
for(var i0:int = 0; i0 < cubeArr.length; i0++){
var vxEn:Number = (scale0[i0] - cubeArr[i0].scaleX) * 0.3;
cubeArr[i0].scaleX += vxEn;
var vzEn:Number = (scale0[i0] - cubeArr[i0].scaleZ) * 0.3;
cubeArr[i0].scaleZ += vzEn;
var vyEn:Number = (scale0[i0] - cubeArr[i0].scaleY) * 0.3;
cubeArr[i0].scaleY += vyEn;
}//for i
}//on2
private function onEnter(event:Event):void{
angleX += (232 - mouseX) /100 ;
camera.z = 500 * (Math.sin(angleX * Math.PI / 180));
camera.x = 500 * (Math.cos(angleX * Math.PI / 180));
/*
angleY += (232 - mouseY) / 100;
camera.z = 500 * (Math.sin(angleY * Math.PI / 180));
camera.y = 500 * (Math.cos(angleY * Math.PI / 180));
*/
//atan2を使ってsceneの原点?とカメラとの角度を出す
/* var z1:Number = (0 - camera.z);
var y1:Number = (0 - camera.y);
var radian:Number = Math.atan2(y1, z1);
camera.rotationX = -radian * 180 / Math.PI;
*/
var x2:Number = (0 - camera.x);
var z2:Number = (0 - camera.z);
var radian2:Number = Math.atan2(x2, z2);
camera.rotationY = radian2 * 180 / Math.PI;
// for(var i:int = 0; i < cubeArr.length; i++){
// Tweener.addTween(cubeArr[i], {y:100, time:5});
// };
camera.y =(465 - mouseY) / 4;
//cubeArr[0].rotationZ += 5;
renderer.renderScene(scene, camera, viewport);
}//onEnter
}//class
}//package