配列の初期化時に配列を入れる方法

よしだとものり
記事: 134
登録日時: 2017年7月25日(火) 23:18

配列の初期化時に配列を入れる方法

投稿記事by よしだとものり » 2017年9月25日(月) 13:29

少しJavascriptの質問になって恐縮です。
配列の初期化に配列を入れるケースを紹介している
ところを探せなかったのでここに質問します。

現在インプットフォームのボタンを改造して、ボタンを押したらスイッチに
その状態を保存するようなプラグインを作っています。
例えばボタン1をクリックしたらスイッチ1をオンにするみたいな感じです。

今のところ自分だけで使うなら、下記のように二つだけのボタンで大丈夫だと
思いますが、可能であれば配列にして汎用性を高めたいと思っています。
無理なら諦めますので、可能であれば教えて下さい。


以下のようなsubmitボタンを
submit:null←ボタン1
submit2:null←ボタン2
gui.submit.addEventListener("mousedown", stopPropagation);

以下のように記述しても問題ないでしょうか?

var btn=[];
submit:btn,

gui.btn[0].addEventListener("mousedown", stopPropagation);
gui.btn[1].addEventListener("mousedown", stopPropagation);
gui.btn[2].addEventListener("mousedown", stopPropagation);

var gui = {

 submit :null,
 submit2: null,
 is_pc : true ,
 init : function(){
 this.is_pc = Utils.isNwjs();

 } ,
 create : function(){
// 入力フォーム



 }
以下略

アバター
しぐれん
記事: 973
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: 配列の初期化時に配列を入れる方法

投稿記事by しぐれん » 2017年9月25日(月) 13:50

配列のリテラル初期化でどうでしょうか?
以下のように二次元配列を定義できるので、これの応用でできると思います。

コード: 全て選択

var array =[
 [1,2,3],
 [4,5,6],
 [7,8,9]
]
現在、プラグイン依頼はお休み中です。
よしだとものり
記事: 134
登録日時: 2017年7月25日(火) 23:18

Re: 配列の初期化時に配列を入れる方法

投稿記事by よしだとものり » 2017年9月25日(月) 15:05

回答ありがとうございます。

元のプログラムが以下のようになっているのですが、
多分一次元配列に、オブジェクトや関数を入れていると
思いますが、アクセス方法が
gui.init();
みたいな事をしていますから、
guiの構造は変えないようにしたいです。


なので submit:null,をsubmit:配列オブジェクトに
変えたかったのですが、以下のような初期化はできないのでしょうか


コード: 全て選択


//汎用的に作り変える方法
   var btn=[];

   var gui = {

   submit :btn,

   is_pc : true ,

   gui.submit.btn[0] = document.createElement('input');


//元のプログラム
   var gui = {

      submit :null,
      submit2: null,
      is_pc : true ,
       init : function(){
      } ,
      create : function(){
      } ,
      success : function(){
      } ,
      cancel : function(){
      } ,
      start : function(){
      } ,
      end : function(){
      } ,
      screenAdjust : function(){ // canvasの左上を基準にした位置に合わせる);
   }

            //
gui.init();



私はツクール標準のショップコマンドの「購入する、売却する、やめる」の処理
が理解できなくてこちらの方法に逃げたのですが、
ショップのコマンドが理解できれば不要なプラグインですので
汎用性を持たせるために修正が多くなるなら諦めます;;
アバター
しぐれん
記事: 973
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: 配列の初期化時に配列を入れる方法

投稿記事by しぐれん » 2017年9月26日(火) 07:18

ツクールのWIndow系クラスの動きを理解する方が最終的には得だと思います。
Window_ShopCommandクラスのmakeCommandList()内をコメントアウトして、どこの処理が何と関連しているかを探ると良いと思います。

また、guiではcancel : function(){...}などでハンドルを登録して動かしますが、ツクールのWindowもsetHandlerでコールバック関数を登録して動かす仕組みです。
この辺りをイメージしてもらえれば、理解しやすいと思うのですが、どうでしょうか?
現在、プラグイン依頼はお休み中です。
よしだとものり
記事: 134
登録日時: 2017年7月25日(火) 23:18

Re: 配列の初期化時に配列を入れる方法

投稿記事by よしだとものり » 2017年9月27日(水) 17:02

少しやってみましたが、indexwindowやgoldwindowとは違って、まったく表示されません。
早速ですが、積みました。
質問内容が違うので新しくスレッドを作って質問しています。

“MV:質問” へ戻る