画像を使用せずに凝ったボタンを作成する(DOM)(Phaser3)

この記事は約2分で読めます。
スポンサーリンク

やりたいこと

Phaser3ではGameObjectにクリックのイベントを登録してボタンとして使用することができます。

しかしGameObjectは四角形や円などで画像を使用する以外に凝ったボタンを作成する子は難しいです。

ここではDomオブジェクトを使用して凝ったボタンを作成します。

スポンサーリンク

作成方法

Domのオブジェクトは以下の記事で作成方法を紹介しました。

記事を踏まえて以下の関数を作成しました。

export function createBtn(scene, x, y, text, font_size, color, callback){
    let el = document.createElement('div');
    el.innerHTML = text
    el.onclick =callback;
    let style = "font: ' + font_size + 'px Arial;color:' + color + ';border-color:' + color + ';border:solid; ";// you should add button style
    let btn = scene.add.dom(x, y, el, style); 

    return btn;
}

style変数にはボタンのスタイルを設定します。

私は追加でborder-radiusとuser-selectを設定しました。

特にuser-selectはnoneに設定しないと中の文字列がドラッグで選択できてしまうため設定していたほうが無難です。

呼び出し

上の関数はSceneクラスの中から以下のように呼び出します。

let x = 100;
let y = 200;
let html = "BUT<i>TON</i>"
let font_size = 10;
let color  =  "#000000" ;
let func = () =>{alert()};
createRadiusBtn(this, x, y, html ,font_size , color ,func )

htmlは例のように他のタグを含むこともできます。<br>などで改行することもできます。

スポンサーリンク

結果

画像を使用せずに凝ったボタンを作成することができました。

表示している文字列は”BUT<i>TON</i>”です。

コメント

タイトルとURLをコピーしました