JAVAScript習得において鎮座しました。

Furosiki
記事: 25
登録日時: 2017年4月02日(日) 13:46

JAVAScript習得において鎮座しました。

投稿記事by Furosiki » 2017年7月03日(月) 19:33

前回、前々回とトリアコンタンさんにコードを教えて貰いました。
前回は対象を絞るといいと言われましたので、にループから始めてみようと、ネットで調べた物を使ってみましたが、
上手く行きませんでした。以下のコードは以前と同じくトリアコンタンさんから頂いたスクリプトを改造した物で、
mawaruという変数で鼠を回し続ける物です。どうか解決策を教えて下さいませ。宜しくお願い致します。

コード: 全て選択

//
/*
@PluginDesc テスト用プラグイン
@Author Furoshiki
@help
*/

/*
(function() {//トリアコンタン様提供

ImageManager.loadBitmap = function(folder, filename, hue, smooth) {
    if (filename) {
        var path = folder + encodeURIComponent(filename) + '.png';
        var bitmap = this.loadNormalBitmap(path, hue || 0);
        bitmap.smooth = smooth;
        return bitmap;
    } else {
        return this.loadEmptyBitmap();
    }
};
    };
})();
*/

(function() {//トリアコンタン様提供
    'use strict';

    var _Spriteset_Map_createLowerLayer = Spriteset_Map.prototype.createLowerLayer;
    var mawaru = 0;


    Spriteset_Map.prototype.createLowerLayer = function() {
        // createLowerLayerの元の処理を呼び出します。
        _Spriteset_Map_createLowerLayer.apply(this, arguments);

        // 画像を格納する箱を作成します。
        this._testSprite = new Sprite();
        this._testSprite2 = new Sprite();
        this._testSprite3 = new Sprite();

        // 箱に実際の画像をロードします。(ピクチャフォルダのファイル名を指定。拡張子不要)
        this._testSprite.bitmap = ImageManager.loadPicture('Bat');

   //蝙蝠を斜め45度へ傾ける。
   this._testSprite.rotation = 45 * Math.PI / 180;
   this._testSprite.x = 100;
   this._testSprite.y = 200;
   this._testSprite.scale.x = 1.5;
   this._testSprite.scale.y = 0.5;
        // 箱を画面に追加します。
        this.addChild(this._testSprite);

   // 二つ目の画像を扱う
        this._testSprite2.bitmap = ImageManager.loadPicture('Actor1_3');

   this._testSprite2.rotation = -45 * Math.PI / 180;
   this._testSprite2.x = 500;
   this._testSprite2.y = 150;
   this._testSprite2.scale.x = -1;
   this._testSprite2.scale.y = 1;
        // 箱を画面に追加します。
        this.addChild(this._testSprite2);

   // 三つ目の画像を扱う
        this._testSprite3.bitmap = ImageManager.loadPicture('Rat');

   this._testSprite3.rotation = 450 * Math.PI / 180;
   this._testSprite3.x = 400;
   this._testSprite3.y = 150;
   this._testSprite3.scale.x = -1;
   this._testSprite3.scale.y = 1;
   this._testSprite3.anchor.x = -0.5;//中心点を画像の半分*半分にしたい。
   this._testSprite3.anchor.y = 0.5;
   this._testSprite3.alpha = 0.5;

        // 箱を画面に追加します。
        this.addChild(this._testSprite3);

   for(mawaru = 0;mawaru > 100;mawaru++){

   this._testSprite3.rotation += 10 * Math.PI / 180;

        this.addChild(this._testSprite3);
   
   };

    };
})();

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

Re: JAVAScript習得において鎮座しました。

投稿記事by しぐれん » 2017年7月03日(月) 20:49

回転するスプライトというクラスを新規に作成して見るのはどうでしょうか?
スプライトにはupdateメソッドがあり、これは毎フレーム呼び出されるメソッドです。
ここで回転角度を毎フレームごとに加算していけば、回転し続ける画像が作れます。

クラスの作成方法ですが、Sprite_**などのクラスを参考にすれば書けると思います。
以下は、ツクール本体から抜き出したクラス定義の一部です。

コード: 全て選択

function Sprite_Character() {
    this.initialize.apply(this, arguments);
}

Sprite_Character.prototype = Object.create(Sprite_Base.prototype);
Sprite_Character.prototype.constructor = Sprite_Character;

Sprite_Character.prototype.initialize = function(character) {
    Sprite_Base.prototype.initialize.call(this);
    this.initMembers();
    this.setCharacter(character);
};

Sprite_Character.prototype.update = function() {
    Sprite_Base.prototype.update.call(this);
    this.updateBitmap();
    this.updateFrame();
    this.updatePosition();
    this.updateAnimation();
    this.updateBalloon();
    this.updateOther();
};

現在、プラグイン依頼はお休み中です。
Furosiki
記事: 25
登録日時: 2017年4月02日(日) 13:46

Re: JAVAScript習得において鎮座しました。

投稿記事by Furosiki » 2017年7月09日(日) 16:11

しぐれんさん有難う御座います。本体のスクリプトはファイルが何に使われるか分かるのですが、
そのファイルの中の何所が何なのか分からないので、何所までできるか分かりませんが、クラス製作に挑戦してみますね。
Furosiki
記事: 25
登録日時: 2017年4月02日(日) 13:46

Re: JAVAScript習得において鎮座しました。

投稿記事by Furosiki » 2017年7月20日(木) 01:42

すみません、JAVAScriptの勉強不足と言うのか、
今一つクラスを作って元のクラスに、どう生かせばいいのか見当もつきませんでした。
お勧めのやり方やアドバイスがあれば教えて下さいませ。
アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: JAVAScript習得において鎮座しました。

投稿記事by トリアコンタン » 2017年7月20日(木) 02:38

こんばんは!
いただいたプラグインをもとにネズミを回すためのコードを追記しました。
いくつかのポイントをコメントにしています。

コード: 全て選択

(function() {//トリアコンタン様提供
    'use strict';

    var _Spriteset_Map_createLowerLayer = Spriteset_Map.prototype.createLowerLayer;
    var mawaru = 0;


    Spriteset_Map.prototype.createLowerLayer = function() {
        // createLowerLayerの元の処理を呼び出します。
        _Spriteset_Map_createLowerLayer.apply(this, arguments);

        // 画像を格納する箱を作成します。
        this._testSprite = new Sprite();
        this._testSprite2 = new Sprite();
        this._testSprite3 = new Sprite();

        // 箱に実際の画像をロードします。(ピクチャフォルダのファイル名を指定。拡張子不要)
        this._testSprite.bitmap = ImageManager.loadPicture('Bat');

        //蝙蝠を斜め45度へ傾ける。
        this._testSprite.rotation = 45 * Math.PI / 180;
        this._testSprite.x = 100;
        this._testSprite.y = 200;
        this._testSprite.scale.x = 1.5;
        this._testSprite.scale.y = 0.5;
        // 箱を画面に追加します。
        this.addChild(this._testSprite);

        // 二つ目の画像を扱う
        this._testSprite2.bitmap = ImageManager.loadPicture('Actor1_3');

        this._testSprite2.rotation = -45 * Math.PI / 180;
        this._testSprite2.x = 500;
        this._testSprite2.y = 150;
        this._testSprite2.scale.x = -1;
        this._testSprite2.scale.y = 1;
        // 箱を画面に追加します。
        this.addChild(this._testSprite2);

        // 三つ目の画像を扱う
        this._testSprite3.bitmap = ImageManager.loadPicture('Rat');

        this._testSprite3.rotation = 450 * Math.PI / 180;
        this._testSprite3.x = 400;
        this._testSprite3.y = 150;
        this._testSprite3.scale.x = -1;
        this._testSprite3.scale.y = 1;
        this._testSprite3.anchor.x = -0.5;//中心点を画像の半分*半分にしたい。
        this._testSprite3.anchor.y = 0.5;
        this._testSprite3.alpha = 0.5;

        // 箱を画面に追加します。
        this.addChild(this._testSprite3);

        // ------ createLowerLayerは「create」と名前の付いているとおり「画像を作る」メソッドです。------
        // このメソッドで回転などの動きを付けることはできません。
        for(mawaru = 0;mawaru > 100;mawaru++){

            this._testSprite3.rotation += 10 * Math.PI / 180;

            // ------ addChildは一度だけ行えばOKです。------
            //this.addChild(this._testSprite3);

        };

    };

    var _Spriteset_Map_update = Spriteset_Map.prototype.update;
    Spriteset_Map.prototype.update = function() {
        _Spriteset_Map_update.apply(this, arguments);
        // ------ 画像に動きをつけたいときは、updateというメソッドに処理を追加します。------
        // updateはフレームごと(1/60秒)に呼び出されるメソッドです。
        this._testSprite3.rotation += 10 * Math.PI / 180;
    };
})();
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
Furosiki
記事: 25
登録日時: 2017年4月02日(日) 13:46

Re: JAVAScript習得において鎮座しました。

投稿記事by Furosiki » 2017年7月24日(月) 02:01

トリアコンタンさん有難う御座います。
コメントが分かり易いので、習得する為にこれをさらに改造してみようかと思います。
また座礁したら書き込ませて頂きますね。

“MV:質問” へ戻る