📄 3d数独说明.txt
字号:
我偶然看到前阵子流行至今的数独,就在想不知道有沒有人有挑战过 3D 数独,所以就也试着先将 3D 数独的模型建起来,不过这个游戏的操作过程可能会有点麻烦,是要让玩家可以走进 3D 的 Cube 中去做设定,还是要让玩家可以将比较靠近里面的整排 Cube 切换到外面来再做设定,这部份的操作方式可能要好好设计一下。此外,建立了 9 x 9 x 9 = 729 个 Cube,对于 PV3D 来说,差不多是该有点吃力的时候了.
需要flashcs3或flash cs4还有papervision3d2.0.
完整模型代码如下:
package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import org.papervision3d.cameras.*; import org.papervision3d.materials.*; import org.papervision3d.objects.*; import org.papervision3d.scenes.*; import flash.text.TextField; import flash.text.TextFormat; [SWF(backgroundColor="#000000", frameRate="60", width="400", height="400")] public class T5step2 extends Sprite { private var container:Sprite; private var scene:MovieScene3D; private var camera:Camera3D; private var length:int=50; private var offset:int=20; private var numBDs:Array = new Array(); public function T5step2() { //背景 var bg:Sprite = new Sprite(); addChild(bg); bg.graphics.beginFill(0x999999); bg.graphics.drawRect(0, 0, 400, 400); bg.graphics.endFill(); //制作数字贴图材质 var tf:TextFormat = new TextFormat(); tf.size = 24; tf.bold = true; for(var i:int=0; i<=9; i++){ var numSprite:Sprite = new Sprite(); numSprite.graphics.lineStyle(1); numSprite.graphics.drawRect(0, 0, length, length); var numTxt:TextField = new TextField(); numTxt.text = i.toString(); numTxt.setTextFormat(tf); numSprite.addChild(numTxt); var bd:BitmapData = new BitmapData(length, length, false, 0xffffffff); bd.draw(numSprite); numBDs.push(bd); } // initialize the objects init3D(); // add a listener for the 3D loop addEventListener(Event.ENTER_FRAME, loop3D); } private function init3D():void{ container = new Sprite(); addChild(container); container.x = 200; container.y = 200; scene = new MovieScene3D(container); camera = new Camera3D(); camera.z = -2000; camera.zoom = 10; camera.focus = 100; for(var idxX:int=0; idxX<9; idxX++){ for(var idxY:int=0; idxY<9; idxY++){ for(var idxZ:int=0; idxZ<9; idxZ++){ var num:int = (idxX + idxY + idxZ) % 9 + 1; var cube:DisplayObject3D = new Cube(new BitmapMaterial(numBDs[num]), length, length, length, 1, 1, 1); cube.x = (idxX-4) * (length+offset); cube.y = (idxY-4) * (length+offset); cube.z = (idxZ-4) * (length+offset); scene.addChild(cube, "cube"+idxX+idxY+idxZ); //cube.container.alpha = 0.9; } } } } private function loop3D(event:Event):void{ camera.hover(0, container.mouseX / 20, container.mouseY / 10); scene.renderCamera(camera); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -