enchant.jsで関数が動いてくれない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
HDD
記事: 11
登録日時: 10年前

enchant.jsで関数が動いてくれない

#1

投稿記事 by HDD » 10年前

↓のプログラムはenchant.jsを使ってランダムで画像を出力するものです。
imagesetの関数の中身を(return外して)game.set=function()の中に持ってくると正常に動作します。
しかし、imageset();が動いてくれなくて、「ゲームスタート!」の画面から進みません。
どうしたら出来るようになりますか?
回答宜しくお願いします。
環境はmacです。

コード:

enchant();

var SET_SIZE = 20;//20✖️20のパネルセット
var COLOR_NUM = 6;//色の数

window.onload = function() {
    var game = new Game();
    game.fps = 30;
    game.preload('white.png','blue.png','red.png',
    'green.png','orange.png','yellow.png','区切り線.png'); // ゲーム開始時にロードする画像ファイルを指定する

    game.onload = function() {
        game.rootScene.addChild(makeMessage("ゲームスタート!"));
        // 画面をクリック(タッチ)した時の処理
        game.rootScene.addEventListener('touchstart', function() {
            game.pushScene(game.set());
        });
        
    };

    game.set = function() {
        var scene = new Scene();
        for(var i=1;i<=3;i++){
            for(var j=1;j<=3;j++){
            var color = new Sprite(SET_SIZE,SET_SIZE); // 画像のサイズ指定
            var randset = rand(0,COLOR_NUM - 1);//画像をランダムで決める(色指定:0から5)
            imageset();//※この関数が動いてくれない
        
            
            color.x = SET_SIZE*i; //x座標を指定
            color.y = SET_SIZE*j; //y座標を指定
            game.rootScene.addChild(color); //画面に画像を表示する
            }
        }
    };
    
   game.start();
};

//メッセージを生成
function makeMessage(text) {
    var label = new Label(text);
    label.font  = "15px monospace";//フォント
    label.color = "rgb(255,255,0)";//文字の色
    label.backgroundColor = "rgba(0,0,1,1.6)";//スタート時の黒の背景(メニュー)
    label.y     = 250;//メニュー画面の位置
    label.width = 320;//メニュー画面の幅
    label.height = 320;//メニュー画面の高さ
    return label;
}

// ランダム関数
function rand(min,max){
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

function imageset(){
            if(randset == 0)
            return color.image = game.assets['white.png']; 
            if(randset == 1)
            return color.image = game.assets['blue.png']; 
            if(randset == 2)
            return color.image = game.assets['red.png']; 
            if(randset == 3)
            return color.image = game.assets['green.png']; 
            if(randset == 4)
            return color.image = game.assets['orange.png']; 
            if(randset == 5)
            return color.image = game.assets['yellow.png'];
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: enchant.jsで関数が動いてくれない

#2

投稿記事 by みけCAT » 10年前

imageset関数で参照しているグローバル(?)変数colorおよびgameはきちんと定義されていますか?
もしもgame.setに代入している関数内のcolorをimageset関数で使いたければ、imageset関数の引数として渡すべきです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: enchant.jsで関数が動いてくれない

#3

投稿記事 by みけCAT » 10年前

すいません、質問文をよく読んでいませんでした。
HDD さんが書きました:imagesetの関数の中身を(return外して)game.set=function()の中に持ってくると正常に動作します。
しかし、imageset();が動いてくれなくて、「ゲームスタート!」の画面から進みません。
どうしたら出来るようになりますか?
例えば、gameとcolorをimageset関数の引数として渡すようにすれば出来ると思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

HDD
記事: 11
登録日時: 10年前

Re: enchant.jsで関数が動いてくれない

#4

投稿記事 by HDD » 10年前

わかりました。ありがとうございます。
ちゃんと引数でrandset,color,gameを渡してやるとできました!

閉鎖

“C言語何でも質問掲示板” へ戻る