Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

pixijs-scene-text

PixiJS v8 でテキストを描画する際に使用するスキル。キャンバス品質のスタイル付きラベルを実現する `Text`、グリフアトラスによるフレーム毎の軽量更新に適した `BitmapText`、SVG 経由で HTML/CSS マークアップを扱う `HTMLText`、文字単位のアニメーションに対応する `SplitText` / `SplitBitmapText`、および `TextStyle`・`tagStyles`・各種コンストラクタオプションを網羅する。`TextStyle`・`BitmapFont.install`・`wordWrap`・`fontFamily` などのキーワードが登場する場面でトリガーされる。

description の原文を見る

Use this skill when rendering text in PixiJS v8. Covers Text for canvas-quality styled labels, BitmapText for cheap per-frame updates via glyph atlas, HTMLText for HTML/CSS markup via SVG, SplitText and SplitBitmapText for per-character animation, TextStyle, tagStyles, constructor options, TextOptions, HTMLTextOptions, BitmapText, SplitTextOptions, SplitBitmapTextOptions. Triggers on: Text, BitmapText, HTMLText, SplitText, SplitBitmapText, TextStyle, HTMLTextStyle, BitmapFont.install, tagStyles, fontFamily, wordWrap.

SKILL.md 本文

PixiJSには5つのテキスト レンダリング クラスがあり、スタイリング、パフォーマンス、アニメーション間のさまざまなトレードオフをカバーしています。TextはフルCSSスタイル互換性のためにキャンバスにレンダリングします。BitmapTextは事前生成されたアトラスから読み込んで低コストの更新を実現します。HTMLTextはリッチマークアップのためSVGの<foreignObject>経由でHTMLフラグメントをレンダリングします。SplitTextSplitBitmapTextは最初の2つのクラスをラップし、アニメーション用の文字ごと、単語ごと、行ごとのコンテナを公開します。

pixijs-scene-core-conceptsに精通していることを前提としています。すべてのテキスト クラスはリーフ ノードです。子を持つことはできません。複数のテキスト インスタンスをContainerでラップして、グループ化できます。

クイックスタート

const text = new Text({
  text: "Hello PixiJS",
  style: {
    fontFamily: "Arial",
    fontSize: 36,
    fill: 0xffffff,
    stroke: { color: 0x4a1850, width: 5 },
    dropShadow: { color: 0x000000, blur: 4, distance: 6 },
  },
});

text.anchor.set(0.5);
text.x = app.screen.width / 2;
text.y = 40;

app.stage.addChild(text);

すべてのテキスト クラスはオプション オブジェクト コンストラクタを使用します。v7の位置指定形式(string, style)はサポートされていません。

関連スキル: pixijs-scene-core-concepts(リーフ、トランスフォーム), pixijs-assets(フォント読み込み), pixijs-performance(BitmapTextのトレードオフ), pixijs-color(FillInput塗りつぶし/ストロック用), pixijs-scene-graphics(グラデーションとパターンをFillInput経由で再利用)。

バリエーション

バリエーション使用場面トレードオフリファレンス
Text高品質な静的またはめったに更新しないラベル更新が高コスト(キャンバス再描画 + GPUアップロード)references/text.md
BitmapTextスコア、タイマー、ゲームプレイラベル、毎フレーム変わる要素スタイリング制限、固定グリフアトラス、クリスプなスケーリングにはMSDFが必須references/bitmap-text.md
HTMLTextリッチなフォーマットテキスト、混合スタイル、実HTMLタグ非同期レンダリング(1フレームの遅延)、Textと同等の更新コストreferences/html-text.md
SplitTextリッチなスタイリングを含む文字ごとのアニメーション各文字が完全なText、長い文字列には高コストreferences/split-text.md
SplitBitmapText長い文字列または動的コンテンツの文字ごとのアニメーションBitmapTextの制限を継承(グリフアトラス、MSDF非依存のクリスプさなし)references/split-bitmap-text.md

使い分けガイド

  • 「スタイル付きの静的ラベルが必要」Text。タイトル、メニュー、ダイアログ、エラーメッセージ用です。references/text.mdを参照してください。
  • 「毎フレーム更新されるスコアまたはタイマーが必要」BitmapText。更新はクワッドの位置変更のみで、キャンバス再描画なし。references/bitmap-text.mdを参照してください。
  • <b><i><br>を含む混合フォーマットが必要」HTMLText。SVG経由の実HTMLおよびCSSレンダリング。references/html-text.mdを参照してください。
  • <red>Warning:</red>のようなインライン色付きタグが必要」tagStylesを使ったTextまたはHTMLText。どちらもサポートしています。
  • 「個々の文字をアニメーションさせたい」 → 短い文字列にはSplitText、長い文字列または多くのインスタンスにはSplitBitmapTextreferences/split-text.md / references/split-bitmap-text.mdを参照してください。
  • 「CJK / アラビア語 / 絵文字の多いテキストが必要」TextまたはHTMLTextBitmapTextはグリフセットが単一アトラスには大きすぎるため失敗します。
  • 「カスタムフォントが必要」 → まずAssets.load({ src: 'font.woff2', data: { family: 'MyFont' } })で読み込んでから、style.fontFamily: 'MyFont'を設定します。TextHTMLTextで機能します。

更新コスト比較

更新トリガーTextBitmapTextHTMLTextSplitTextSplitBitmapText
.textの変更非常に低非常に高(N個のテキスト再レンダリング)低(N個のクワッド位置変更)
.styleの変更非常に高
移動(.x, .y無料無料無料無料無料
回転 / スケーリング無料無料無料無料無料

「無料」= 通常のContainerトランスフォームコスト。「高」= 新しいキャンバス描画 + GPUアップロード。「非常に低」= クワッド位置変更のみ。毎フレーム変わるテキストの更新は、BitmapTextまたはSplitBitmapTextでのみ行います。

クイックコンセプト

  • オプション オブジェクト コンストラクタ。 v8のすべてのテキスト クラスはnew Text({ text, style, ... })を使用します。v7の(string, style)形式は削除されました。
  • tagStyles TextHTMLTextstyle.tagStyles経由のタグごとのスタイリングをサポートします。タグはtagStylesがエントリを持つ場合にのみ解析されます。そうでない場合、<は文字通りに扱われます。
  • BitmapFont.install BitmapTextを作成する前にアトラスを事前生成します。installなしでは、新しいfontFamilyで初めてBitmapTextを作成するとアトラスが遅延生成されます。
  • MSDFフォント。 マルチチャネル符号付き距離フィールド フォントは任意のサイズで鮮明に保たれます。外部ツール(例:msdf-bmfont)で生成し、Assets.load('font.fnt')で読み込みます。カスタムビルドではimport 'pixi.js/text-bitmap'が必須です。

よくある間違い

[高] 毎フレームText.textを更新する

間違い:

app.ticker.add(() => {
  scoreText.text = `Score: ${score}`;
});

正解:

const scoreText = new BitmapText({ text: "Score: 0", style });
app.ticker.add(() => {
  scoreText.text = `Score: ${score}`;
});

すべてのText更新は文字列全体を再ラスタライズします。毎フレーム変わる値にはBitmapTextを使用してください。

[高] 位置指定コンストラクタ引数

間違い:

const text = new Text("Hello", { fontSize: 24 });

正解:

const text = new Text({ text: "Hello", style: { fontSize: 24 } });

v8は(string, style)形式を削除しました。すべてのテキスト クラスはオプション オブジェクトを使用します。

[高] カスタムビルドでpixi.js/text-bitmapをインポートしていない

skipExtensionImports: trueまたはアグレッシブなツリーシェーキングの下では、import 'pixi.js/text-bitmap'を追加しない限り、Assets.load('font.fnt')は暗黙的に生データを返します。標準のimport { ... } from 'pixi.js'バンドルは拡張機能を含めています。

[中] テキスト インスタンスに子を追加する

すべてのテキスト クラスはallowChildren = falseを設定します。テキストを他のコンテンツとグループ化するにはContainerでラップしてください。

APIリファレンス

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
pixijs
リポジトリ
pixijs/pixijs-skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/pixijs/pixijs-skills / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: pixijs · pixijs/pixijs-skills · ライセンス: MIT