![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2012
Сообщений: 213
|
Хм, заменил на числовые значения, но не строит теперь!) Хотя и ошибок не выдаёт)
Добавлено через 14 минут ArgumentError: Error #1063: Несоответствие количества аргументов в ua::PlaneObj/initCameraControll(). Ожидалось 0, получено 1. Теперь это =( Добавлено через 25 часов 43 минуты Ладно, всем спасибо, постараюсь дальше сам разобраться |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 213
|
Я в отчаянии =( Никакие костыли не работают! Как ещё можно обратиться к stage не из класса?
|
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Сделайте в классе в котором нужно обратится к сцене статический метод со сценой в параметрах.
В главном классе, до создания экземпляра нужного Вам класса, передайте сцену в статический метод. И получится так, что при создании экземпляра, в конструкторе уже будет сцена. Добавлено через 2 минуты package { import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point NeedStage.setStage(stage); var _neddStage:NeedStage = new NeedStage(); } } } |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 213
|
Класс, в котором мне нужно обратиться к сцене расширяет не спрайт, а бейсик вью + главній класс не может расширять спрайт - выдаёт ошибку... У меня главный клас расширяет Мувиклип
|
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Не имеет значения, в какой класс передавать сцену.
|
|
|||||
|
Регистрация: Apr 2012
Сообщений: 213
|
Тоесть после этих функций, я смогу из класса NeedStage обращаться к сцене? Или из функции setStage?
|
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
package ua { import org.papervision3d.cameras.SpringCamera3D; import org.papervision3d.core.math.Number3D; import org.papervision3d.core.geom.renderables.Vertex3D; import org.papervision3d.core.geom.Lines3D; import flash.geom.Rectangle; import flash.events.Event; import org.papervision3d.cameras.CameraType; import org.papervision3d.events.InteractiveScene3DEvent; import org.papervision3d.materials.special.LineMaterial; import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.special.CompositeMaterial; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.objects.primitives.PaperPlane; import org.papervision3d.view.BasicView; import flash.events.KeyboardEvent; import flash.ui.Keyboard; public class PlaneObj extends BasicView { private static var _stage:Stage;//!!!!!!!!!!!!!!! public var v0:Vertex3D; public var v1:Vertex3D; public var c0:Vertex3D; public var c1:Vertex3D; public var d0:Vertex3D; public var d1:Vertex3D; public var z0:Vertex3D; public var z1:Vertex3D; public var z2:Vertex3D; public var z3:Vertex3D; public var lm:LineMaterial = new LineMaterial(0x000000); public var paperPlane:PaperPlane; private var keyRight:Boolean; private var keyLeft:Boolean; private var keyForward:Boolean; private var keyBackward:Boolean; public var speed:Number=30 private var KeyFall:Boolean; private var KeyFly:Boolean; private var nitro:Boolean; public function PlaneObj () { super(_stage.stageWidth,_stage.stageHeight/*//!!!!!!!!!!!!!!!*/,true,false,CameraType.SPRING); initCameraControll(); var camera:SpringCamera3D = SpringCamera3D(camera); camera.mass = 20; camera.damping = 4; camera.stiffness = 1; camera.positionOffset = new Number3D(0,150,-500); camera.lookOffset = new Number3D(0,0,100); init (); startRendering (); } public static function setStage(stage:Stage):void { _stage = stage; } private function initCameraControll():void { stage.addEventListener (KeyboardEvent.KEY_DOWN,keyDownHandler); stage.addEventListener (KeyboardEvent.KEY_UP,keyUpHandler); } private function keyDownHandler (e:KeyboardEvent):void { switch ( e.keyCode ) { case "W".charCodeAt() : case Keyboard.UP : keyForward = true; break; case "S".charCodeAt() : case Keyboard.DOWN : keyBackward = true; break; case "A".charCodeAt() : case Keyboard.LEFT : keyLeft = true; break; case "D".charCodeAt() : case Keyboard.RIGHT : keyRight = true; break; case "T".charCodeAt() : KeyFly = true break; case "G".charCodeAt() : KeyFall = true break; case "Z".charCodeAt() : nitro = true break; } } private function keyUpHandler (e:KeyboardEvent):void { switch (e.keyCode) { case "W".charCodeAt() : case Keyboard.UP : keyForward = false; break; case "S".charCodeAt() : case Keyboard.DOWN : keyBackward = false; break; case "A".charCodeAt() : case Keyboard.LEFT : keyLeft = false; break; case "D".charCodeAt() : case Keyboard.RIGHT : keyRight = false; break; case "T".charCodeAt() : KeyFly = false break; case "G".charCodeAt() : KeyFall = false break; case "Z".charCodeAt() : nitro = false break; } } private function init ():void { viewport.interactive = true; v0 = new Vertex3D(0,550,0); v1 = new Vertex3D(0,-550,0); c0 = new Vertex3D(550,0,0); c1 = new Vertex3D(-550,0,0); d0 = new Vertex3D(0,0,550); d1 = new Vertex3D(0,0,-550); var lineN:Lines3D = new Lines3D(lm); lineN.addNewLine(2,v0.x,v0.y,v0.z,v1.x,v1.y,v1.z); lineN.addNewLine(2,c0.x,c0.y,c0.z,c1.x,c1.y,c1.z); lineN.addNewLine(2,d0.x,d0.y,d0.z,d1.x,d1.y,d1.z); scene.addChild(lineN); startRendering(); var planeMaterial:CompositeMaterial = new CompositeMaterial(); planeMaterial.addMaterial (new ColorMaterial(0x00CC00)); planeMaterial.addMaterial (new WireframeMaterial(0x484848)); planeMaterial.doubleSided = true; paperPlane = new PaperPlane(planeMaterial); scene.addChild (paperPlane); paperPlane.y = 250; paperPlane.z = -1000; camera.z = -1500; camera.target = paperPlane; } private function moveObject ():void { if (keyForward) { paperPlane.moveForward (speed); //camera.moveForward (30); } else if (keyBackward) { paperPlane.moveBackward (speed); //camera.moveBackward (30); } if (keyRight) { paperPlane.localRotationY -= 2; //camera.localRotationY -= 2; } else if (keyLeft) { paperPlane.localRotationY += 2; //camera.localRotationY += 2; } if(KeyFly){ paperPlane.y += 10; } else if(KeyFall){ paperPlane.y -=10 } if(nitro){ speed = 100 } else{ speed = 30 } } private function doInteractions (e:InteractiveScene3DEvent):void { camera.target=e.displayObject3D; } override protected function onRenderTick (event:Event = null):void { moveObject(); super.onRenderTick (); } } } |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 213
|
А слушатели событий в private function initCameraControll():void тоже менять?)
Добавлено через 2 минуты Даже если их поиенять(и добавить импорт сцены) - всё равно не рисует с TypeError: Error #1009, что-то не так... |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Конечно, раз Вы уже притащили в класс ссылку, то почему бы ей во всех случаях и не пользоваться.
|
|
|||||
|
Регистрация: Apr 2012
Сообщений: 213
|
И Тем не менее ошибка... Вот основной класс
package { import ua.PlaneObj; import fl.controls.TextArea; import flash.events.MouseEvent; import flash.events.Event; import flash.display.MovieClip; import flash.utils.Timer; import flash.events.TimerEvent; import flash.display.*; import flash.display.Sprite; import flash.events.Event; public class AddButton extends Sprite { public var k:Number = 1 public var vx1:Number; public var vy1:Number; public var vz1:Number; public var vx2:Number; public var vy2:Number; public var vz2:Number; public var vx3:Number; public var vy3:Number; public var vz3:Number; public var vx4:Number; public var vy4:Number; public var vz4:Number; private var _timer:Timer; public function AddButton() { var vectorS:PlaneObj = new PlaneObj() ; trace(stage.stageHeight) trace(stage.stageWidth) addChild(vectorS); var bt_start:MovieClip = new btn var bt_sutr:MovieClip = new btn_st var bt_supa:MovieClip = new btn_sp var bt_ratr:MovieClip = new btn_rt var fon:MovieClip = new RAMKA addChild(bt_start) addChild(bt_sutr) addChild(bt_ratr) addChild(bt_supa) //addChild(fon) bt_start.x = 50 bt_start.y= 300 bt_sutr.x = 150 bt_sutr.y= 300 bt_supa.x = 300 bt_supa.y = 300 bt_ratr.x = 500 bt_ratr.y = 300 if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); PlaneObj.setStage(stage); var _neddStage:PlaneObj = new PlaneObj(); } } } |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|