キノコが何か作るブログ

ゲーム・ドット絵・アプリなどを作ります

MENU

ゲーム制作の進捗(83日目)

onpointstartについて色々試す

どうもonpointstartについて正しく理解できていないみたいなので、onpointstartを使って色々試してみる。
まずこれは動いた

// MainScene クラスを定義
phina.define('MainScene', {
  superClass: 'DisplayScene',
  init: function() {
    this.superInit();
    // 背景色を指定
    this.backgroundColor = '#444';
    this.group = DisplayElement().addChildTo(this);
    this.window = RectangleShape().addChildTo(this.group);
    this.window.setPosition(320, 480);
    this.window.setSize(400, 400);
    
    this.window.setInteractive(true);  
    this.window.onpointstart = function(){
      console.log('touch');
      if(this.alpha == 1.0) {
        this.alpha = 0.0;
      }else if(this.alpha == 0.0) {
        this.alpha = 1.0;
      }
    }
  },
});

問題はここから。

    var group = DisplayElement().addChildTo(this);
    var window = RectangleShape().addChildTo(group);
    window.setPosition(320, 480);
    window.setSize(400, 400);
    
    window.setInteractive(true);  
    window.onpointstart = function(){
      console.log('touch');
      //ウィンドウグループの透明度変更
      group.alpha = 0.0;
    }

↑これも通るが、なぜか次が通らない。

    var group = DisplayElement().addChildTo(this);
    var window = RectangleShape().addChildTo(group);
    window.setPosition(320, 480);
    window.setSize(400, 400);
    
    window.setInteractive(true);  
    window.onpointstart = function(){
      console.log('touch');
      //ウィンドウグループの透明度変更
      if(group.alpha == 1.0){
        group.alpha = 0.0;
      }else if(group.alpha == 0.0){
        group.alpha = 1.0;
      }

色々試行錯誤した結果、↓これならいけた。
おそらく比較演算子のところでうまくいっていなかったのだと思われる。

追記
↑のコードで通ります。ご指摘ありがとうございました。
f:id:mizukinoko:20190708180331g:plain
ちゃんとクリックに反応して、DisplayElementのα値が変更されるようになった。

実装する

f:id:mizukinoko:20190708181313g:plain
クエストの方にも対応済みです。
ようやくonpointstartの使い方が分かりました。
というか、コールバック関数内のthisのスコープを勘違いしていたというのもある。
僕はどうもコールバックとかスコープ範囲についてまだまだ知識不足なところがあるようです。
もっと勉強しなくてはいけませんね。

本日の進捗は以上です。
それではまた明日。

プライバシーポリシー