各情報のセーブ方法を模索中
状況
Imageになんとかして「密度」とか「トゲあり情報」とかを持たせようとして撃沈。おそらく、ドラッグ&ドロップするものを一つのコンポーネントとして別で作ったほうが良い。そこまでやるなら、ゲーム本体もそれに合わせれば、エディタ上で動かすこともできるんじゃないか、という風に考え中。またも時間がかかりそう。
コード
昨日は載せられなかったので、変更点だけ載せておく。配列で指定していたステージデータを、SharedObjectで読み込むようにしただけ。
//リスタートのために、初期化処理と共通部分を分離 private function Reset():void { {//Reset Manager ObjectManager.Reset(); PhysManager.Reset(); } //現在、一番最初に作ったオブジェクトの挙動がおかしくなるバグあり //Load Stage /* STAGE_PARAM.forEach( function(param:Object, index:int, arr:Array):void{ var obj:IObject; if(param.name == "Block"){ var blockParam:ObjectParam = new ObjectParam(); { blockParam.m_LX = param.lx; blockParam.m_RX = param.rx; blockParam.m_UY = param.uy; blockParam.m_DY = param.dy; ObjectParam.PARAM_NAME.forEach( function(block_param_name:String, block_index:int, block_arr:Array):void{ if(param.hasOwnProperty(block_param_name)){ blockParam[block_param_name] = param[block_param_name]; } } ); } obj = new CBlock(blockParam); } if(param.name == "DamageFloor"){ obj = new CFloor_Damage(param.lx, param.rx, param.uy, param.dy); } if(param.name == "Enemy"){ var enemyParam:EnemyParam = new EnemyParam(); { enemyParam.m_X = param.x; enemyParam.m_Y = param.y; EnemyParam.PARAM_NAME.forEach( function(enemy_param_name:String, enemy_index:int, enemy_arr:Array):void{ if(param.hasOwnProperty(enemy_param_name)){ enemyParam[enemy_param_name] = param[enemy_param_name]; } } ); } obj = new CEnemy(enemyParam); } if(obj != null){ obj.OnRegist(m_SpriteGame); } } ); /*/ var so:SharedObject = SharedObject.getLocal("stage_data", "/"); if(so){ var stage_data:Array = so.data.stage_data as Array; stage_data.forEach( function(param:Object, index:int, arr:Array):void{ var obj:IObject; if(param.name == "Block"){ var blockParam:ObjectParam = new ObjectParam(); { blockParam.m_LX = param.lx; blockParam.m_RX = param.rx; blockParam.m_UY = param.uy; blockParam.m_DY = param.dy; ObjectParam.PARAM_NAME.forEach( function(block_param_name:String, block_index:int, block_arr:Array):void{ if(param.hasOwnProperty(block_param_name)){ blockParam[block_param_name] = param[block_param_name]; } } ); } obj = new CBlock(blockParam); } if(param.name == "DamageFloor"){ obj = new CFloor_Damage(param.lx, param.rx, param.uy, param.dy); } if(param.name == "Enemy"){ var enemyParam:EnemyParam = new EnemyParam(); { enemyParam.m_X = param.x; enemyParam.m_Y = param.y; EnemyParam.PARAM_NAME.forEach( function(enemy_param_name:String, enemy_index:int, enemy_arr:Array):void{ if(param.hasOwnProperty(enemy_param_name)){ enemyParam[enemy_param_name] = param[enemy_param_name]; } } ); } obj = new CEnemy(enemyParam); } if(obj != null){ obj.OnRegist(m_SpriteGame); } } ); } //*/ {//Player m_Player = new CPlayer(stage); m_Player.SetPos(PLAYER_X, PLAYER_Y); m_Player.OnRegist(m_SpriteGame); } {//Goal var goal:CGoal = new CGoal(m_Player); goal.SetPos(RANGE_LX + FLOOR_W*3.8 + FLOOR_GAP_W*3, RANGE_DY - FLOOR_GAP_H*1 - 80); goal.OnRegist(m_SpriteGame); } /* {//Block Sleeping blockParam4.m_PhysParam_Density = 20.0;//Movable blockParam4.m_PhysParam_StartSleep = true; } //*/ /* {//Block Breakable blockParam2.m_PhysParam_Density = 0.0;//Fixed blockParam2.m_BecomeGro = true; } {//Block AntiGravity blockParam3.m_PhysParam_Density = 20.0;//Movable blockParam3.m_AntiGravity = true; } //*/ //タイマーのリセット m_PreTime = getTimer(); }