Skip to content

例題:フキダシを表示

フキダシ

フキダシを使って、なにかを言わせましょう。

動作例

緑の旗をクリックすると、左右のネコが挨拶を交わします。


※ TypeScratcherロゴをクリックで表示、緑の旗クリックで動作開始


index.ts

typescript
import { Typescratcher as Ts } from "@tscratch3/typescratcher";
import type { Sprite } from "@tscratch3/typescratcher";

// イメージ作成
import { CatAImage, CatBImage, BlueskyImage } from "./sub/images";

// スプライト作成(左のネコ)
const catA = new Ts.Sprite( "catA" );
catA.Costume.add( CatAImage ); // イメージを追加
catA.Motion.position.xy = [ -100, -100 ]; // 座標の位置[X座標、Y座標]

// スプライト作成(右のネコ)
const catB = new Ts.Sprite( "catB" );
catB.Costume.add( CatBImage ); // イメージを追加
catB.Motion.position.xy = [ 100, -100 ]; // 座標の位置[X座標、Y座標]
catB.Looks.size.w = -100;  // 幅をマイナスとすることで 反対に向く

// ステージ作成
const stage = new Ts.Stage();
stage.Backdrop.add( BlueskyImage ); // 背景を追加

// 【旗クリックされたとき】( 左のネコ )
catA.Event.flagPresser().func = async function* ( this: Sprite ) {
    this.Looks.bubble.say( 'やあ、こんにちは' );
    await this.Control.wait( 4 ); // 4秒間待つ
    this.Looks.bubble.say( '' ); // 空 ( ふきだしを消す )

}
// 【旗クリックされたとき】( 右のネコ )
catB.Event.flagPresser().func = async function* ( this: Sprite ) {
    await this.Control.wait( 2 ); // 2秒間待つ
    this.Looks.bubble.think( 'こんにちは' );
    await this.Control.wait( 2 ); // 2秒間待つ
    this.Looks.bubble.say( '' ); // 空 ( ふきだしを消す )
}

// 開始
Ts.engine.start();

『言う』『考える』

2匹(catA, catB)のスプライト別に『旗をクリックされたとき』に動くスレッドを用意します。

Looks.buble.say('〇〇〇')』『Looks.buble.think('〇〇〇')』を順番にタイミングをずらしながら実行することで、会話をしているように見せます。

Looks.buble.say('')』または『Looks.buble.think('')』と「空」の文字を渡すと、フキダシが消えます。

TypeScratcherは『〇秒間、言う』『〇秒間、考える』メソッドも用意しています(別で解説します)。