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; }
色々試行錯誤した結果、↓これならいけた。
おそらく比較演算子のところでうまくいっていなかったのだと思われる。
追記
↑のコードで通ります。ご指摘ありがとうございました。
ちゃんとクリックに反応して、DisplayElementのα値が変更されるようになった。
実装する
クエストの方にも対応済みです。
ようやくonpointstartの使い方が分かりました。
というか、コールバック関数内のthisのスコープを勘違いしていたというのもある。
僕はどうもコールバックとかスコープ範囲についてまだまだ知識不足なところがあるようです。
もっと勉強しなくてはいけませんね。
本日の進捗は以上です。
それではまた明日。