各情報のセーブ方法を模索中

状況

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();
		}