Agent Skills by ALSEL
Anthropic Claudeその他⭐ リポ 0品質スコア 50/100

pixijs-scene-container

PixiJS v8 において、表示オブジェクトのグループ化・配置・変形を行う際に使用するスキル。`Container` のコンストラクタオプション(`isRenderGroup`、`sortableChildren`、`boundsArea`)、`addChild`/`removeChild`/`addChildAt`/`swapChildren`/`setChildIndex` による子要素の管理、`position`/`scale`/`rotation`/`pivot`/`skew`/`alpha`/`tint` などのトランスフォーム操作、`getBounds`/`getGlobalPosition`/`toLocal`/`toGlobal` による座標変換、`zIndex` ソートや `cullable`、フレームごとの `onRender` コールバック、`destroy` まで幅広くカバーする。

description の原文を見る

Use this skill when grouping, positioning, or transforming display objects in PixiJS v8. Covers Container constructor options (isRenderGroup, sortableChildren, boundsArea), addChild/removeChild/addChildAt/swapChildren/setChildIndex, position/scale/rotation/pivot/skew/alpha/tint, getBounds/getGlobalPosition/toLocal/toGlobal, zIndex sorting, cullable, onRender per-frame callback, destroy. Triggers on: Container, addChild, removeChild, addChildAt, swapChildren, sortableChildren, zIndex, position, scale, rotation, pivot, getBounds, toGlobal, toLocal, onRender, destroy, constructor options, ContainerOptions.

SKILL.md 本文

Container は PixiJS v8 のシーングラフの汎用ノードです。子要素を保持し、変形、アルファ、色合い、ブレンドモードをサブツリー全体に適用します。作成するすべてのディスプレイオブジェクトは、ブランチを構築する Container か、その中にネストされるリーフ(SpriteGraphicsTextMesh)のいずれかになります。

pixijs-scene-core-concepts に精通していることを前提としています。

クイックスタート

const group = new Container({
  label: "hero-group",
  x: 200,
  y: 150,
  sortableChildren: true,
});

const body = new Sprite(await Assets.load("body.png"));
const head = new Sprite(await Assets.load("head.png"));
head.position.set(0, -40);
head.zIndex = 1;

group.addChild(body, head);
group.pivot.set(group.width / 2, group.height / 2);
group.scale.set(1.5);

app.stage.addChild(group);

関連スキル: pixijs-scene-core-concepts(シーングラフの思考モデル、マスキング、レイヤー、レンダーグループ)、pixijs-scene-sprite / pixijs-scene-graphics / pixijs-scene-text / pixijs-scene-mesh(コンテナの内部に配置されるリーフオブジェクト)、pixijs-eventseventMode、ヒットテスト)、pixijs-math(Matrix、toGlobal/toLocal の詳細)、pixijs-performancecacheAsTexture、カリング、レンダーグループ)。

コアパターン

コンストラクタオプション

const container = new Container({
  label: "world",
  x: 100,
  y: 50,
  scale: 2,
  rotation: Math.PI / 4,
  alpha: 0.8,
  visible: true,
  tint: 0xffaa00,
  blendMode: "add",
  sortableChildren: true,
  isRenderGroup: true,
  origin: { x: 0, y: 0 },
  boundsArea: new Rectangle(0, 0, 1920, 1080),
});

すべての Container オプション(positionscaletintlabelfilterszIndex など)もここで有効です — skills/pixijs-scene-core-concepts/references/constructor-options.md を参照してください。

Container コンストラクタは assignWithIgnore を使用して、options オブジェクト内のすべてのフィールドをインスタンスにバルクコピーしますが、childrenparenteffects は除きます。Container のすべてのパブリックプロパティは有効なコンストラクタオプションです:cullablecullAreamaskfilterAreaeventModehitArea など。上記の options ブロックは最も一般的なものをグループ化しています。完全なリストについては、上記の共有リファレンスを参照してください。

isRenderGroup: true はコンテナを独自のレンダーグループに昇格させるため、その変形は CPU で子ごとに再計算される代わりに GPU で適用されます。安定したサブツリー(大規模な静的ワールド、UI レイヤー)に使用します。過度に使用しないでください。ほとんどのシーンは明示的なレンダーグループを必要とせず、多すぎるとパフォーマンスが低下します。昇格させる前にプロファイルしてください。pixijs-scene-core-concepts/references/scene-management.md を参照してください。

sortableChildren: true は、次のレンダーで子が zIndex で再度ソートされるようにします。以下の zIndex を参照してください。

origin は第一級の v8 変形ヘルパーです:ObservablePoint で、コンテナを移動せずに回転/スケールの中心として機能します。pivot はローカル原点のプロジェクションを親空間にシフトし(回転中心を変更することで オブジェクトを移動させる)、origin は位置を変わらず、指定されたローカルポイント周辺で単に回転/スケールします。PointData、単一の数値(両軸に適用される)を受け付けるか、container.origin.set(x, y) 経由でライブに設定できます。同じコンテナに pivotorigin の両方を設定すると、複合動作が発生し、推奨されません。1 つを選択してください。

boundsAreagetBounds() を強制的に子を再帰的に測定する代わりに固定矩形を返します。これは数百の安価で予測可能な子を持つコンテナのパフォーマンス向上です。

cullablecullArea は有効なコンストラクタオプション(assignWithIgnore パスは他のフィールドと同様にコピーします)ですが、カリングの設定はシーングラフの懸念ではなくパフォーマンスの懸念であるため、pixijs-performance に記載されています。

リーフ vs コンテナ

const parent = new Container();
const sprite = new Sprite(texture);

parent.addChild(sprite);

Container(および RenderLayer のような子を保持する意図したサブクラス)のみが子を持つべきです。SpriteGraphicsTextMeshParticleContainer パーティクル、および DOMContainer コンテンツは PixiJS v8 の慣例によってリーフです。物をグループ化する必要があるときはいつでも Container でラップしてください。コンテナにレイアウトロジックを与え、リーフを純粋なビジュアルデータとして保ちます。リーフに子を追加するとデプリケーション警告がログに記録され、将来のバージョンではハードエラーになる予定です。

子の追加と削除

const parent = new Container();

parent.addChild(a, b, c);
parent.addChildAt(d, 0);
parent.swapChildren(a, b);
parent.setChildIndex(c, 0);

parent.removeChild(b);
parent.removeChildAt(0);
parent.removeChildren();

parent.removeChildren(0, 2);

addChild は任意の数の子を受け付け、最初のものを返します。子は配列の順序でレンダリングされます。インデックス 0 は最初に描画されます(背後)、最後のインデックスは最後に描画されます(前方)。addChildAt は特定のインデックスに挿入します。setChildIndex は既存の子を移動します。swapChildren は 2 つの子の位置を交換します。

removeChildren(beginIndex?, endIndex?) はスライスを削除し、削除された配列を返します。

既に同じコンテナに属する子で addChildAt を呼び出すと、暗黙的に新しいインデックスに移動します。親子関係は変わらないため、added / childAdded / removed / childRemoved イベントは発火しません。イベントは子が別の親から来たときのみ発火します(または親がいない場合)。

ワールド変形を保持する再親化(子が視覚的にジャンプしない)では、reparentChild / reparentChildAt を使用します。古い子のローカル変形をコピーしながら所定の位置で子を交換する場合は、replaceChild を使用します。

変形プロパティ

const obj = new Container();

obj.x = 100;
obj.y = 200;
obj.position.set(100, 200);

obj.scale.set(2);
obj.scale = 2;

obj.rotation = Math.PI / 4;
obj.angle = 45;

obj.pivot.set(50, 50);
obj.skew.set(0.1, 0.2);

obj.alpha = 0.5;
obj.tint = 0xff0000;
obj.visible = false;
obj.renderable = false;
  • positionscalepivotskewObservablePoint です。scale = 2 を割り当てることは有効であり、両軸を設定します。
  • rotation はラジアン。angle は度数。それらはエイリアスで同期を保ちます。
  • pivot はローカル空間の点を設定し、親空間の position にマップします。変更すると、コンテナを移動させ、回転させます。
  • alphatint は子に掛け算で伝播します。blendMode はこのコンテナの描画命令に適用されます。
  • visible = false はレンダリングと変形更新をスキップします。renderable = false はレンダリングをスキップしますが、変形の更新は続けます(描画なしで getBounds() またはヒットテストが必要な場合に使用)。

zIndex と sortableChildren

const world = new Container({ sortableChildren: true });

const ground = new Sprite(groundTexture);
ground.zIndex = 0;

const player = new Sprite(playerTexture);
player.zIndex = 10;

const ui = new Sprite(uiTexture);
ui.zIndex = 100;

world.addChild(ground, player, ui);

sortableChildrentrue の場合、コンテナは次のレンダー前に zIndex で子を再ソートします。子の zIndex を変更すると、親が自動的に再ソートが必要なものとしてマークされます。必要なものだけをソートしてください。sortableChildren を無効のままにする方が安くなります。完全な手動制御が必要な場合は、zIndex 値を変更した後、container.sortChildren() を自分で呼び出してください。

階層と分離された レンダーオーダーコントロール(子はロジカルペアレントを保ちますが、別の z でレンダリング)については、RenderLayer を使用します。pixijs-scene-core-concepts/references/scene-management.md を参照してください。

バウンズと座標変換

const bounds = container.getBounds();
console.log(bounds.x, bounds.y, bounds.width, bounds.height);

const rect = container.getBounds().rectangle;

const local = new Point(10, 20);
const world = container.toGlobal(local);
const backToLocal = container.toLocal(world);

const selfPos = container.getGlobalPosition();

getBounds()Bounds オブジェクト(Rectangle ではない)を返します。基本的なゲッター(xywidthheight)機能しますが、.contains() のような Rectangle 固有のメソッドまたは Rectangle を必要とする API に渡す場合は、.rectangle プロパティを読み込みます。シグネチャは getBounds(skipUpdate?: boolean, bounds?: Bounds) です — 強制的な変形更新をスキップするには最初の引数として true を渡し、新しいインスタンスを割り当てることを避けるために 2 番目の引数として オプションの Bounds インスタンスを渡します。

toGlobal(point) はこのコンテナのローカル空間の点をシーンルート空間に変換します。toLocal(point, from?) は別のコンテナのローカル空間(または from を省略した場合はグローバル空間)から変換します。getGlobalPosition()parent.toGlobal(this._position) の短縮形です。

サイズ指定

const sprite = new Sprite(texture);

sprite.setSize(200, 100);
const { width, height } = sprite.getSize();

setSizescale を調整し、コンテナのバウンズが要求されたピクセルサイズに収まるようにします(1 つの操作)。.width.height を個別に設定すると機能しますが、各割り当てはバウンズの再計算をトリガーします。両軸を変更する場合は setSize を優先してください。

コンテナイベント

const parent = new Container();

parent.on("childAdded", (child, container, index) => {
  console.log("added at", index, child.label);
});

parent.on("childRemoved", (child, container, index) => {
  console.log("removed from", index);
});

const child = new Container();
child.on("added", (newParent) => console.log("entered", newParent.label));
child.on("removed", (oldParent) => console.log("left", oldParent.label));
child.on("visibleChanged", (visible) => console.log("visible:", visible));
child.on("destroyed", (destroyed) => console.log("gone", destroyed.label));

parent.addChild(child);
イベント発火する対象引数
childAdded子を受け取る親(child, container, index)
childRemoved子を失う親(child, container, index)
addedアタッチされた子(parent)
removedデタッチされた子(parent)
destroyed破棄されたコンテナ(container)
visibleChangedvisible がフリップしたコンテナ(visible)

これらは ContainerEventEmitter 側で発出されます。pixijs-events からのポインタイベントと混同しないでください。

destroyed は内部クリーンアップ後ですがリスナーが削除される前に発火するため、ハンドラが実行される時点で positionscalepivotoriginskewparent はすでに null になっており、children は空になっています(長さ 0、ただし配列参照自体は null ではない)。ハンドラの内部ではなく、destroy() を呼び出す前に、コンテナから必要なデータをキャプチャしてください。

onRender でのフレームごとの更新

const container = new Container();

container.onRender = (renderer) => {
  container.rotation += 0.01;
};

container.onRender = null;

onRender はコンテナがレンダリングされている間、毎フレーム実行され、アクティブな Renderer を受け取ります。特定のコンテナに関連付けられた軽量なアニメーションまたはフレームごとの更新に使用します。v7 ではこのパターンは updateTransform をオーバーライドすることで実行されていたが、v8 では毎フレーム実行されなくなります。onRender = null を設定してコールバックをデタッチします。

ラベルで検索して親から削除

const player = world.getChildByLabel("player");
const enemies = world.getChildrenByLabel(/enemy-\d+/, true);

const bounds = hud.getLocalBounds();

oldSprite.removeFromParent();
  • getChildByLabel(label, deep?) — 文字列または RegExp で最初にマッチ。再帰的な検索は true を渡します。
  • getChildrenByLabel(label, deep?, out?) — すべてのマッチ。オプションの再利用可能な出力配列を受け付けます。
  • getLocalBounds() — このコンテナ独自の座標空間内のバウンズ、親の変形を無視します。自己完結型のレイアウト計算の場合、getBounds() より安くなります。
  • removeFromParent() — 現在の親からこのインスタンスをデタッチします(既にオーファンの場合はノーオペレーション)。

破棄

container.destroy();

container.destroy({
  children: true,
  texture: true,
  textureSource: true,
});

console.log(container.destroyed);

デフォルトでは destroy() はこのコンテナを親からアンリンクし、その独自の状態を破棄します。{ children: true } を渡して、すべての子孫を再帰的に破棄します。これはサブツリー全体を強制するための通常の呼び出しです。texture: truetextureSource: true はさらに、リーフ子によって参照される GPU リソースを破棄します(それらのためにロードされたテクスチャを持つスプライトに便利)。cacheAsTexture がオンの場合、破棄する前に container.cacheAsTexture(false) で無効にします。

一般的な間違い

[CRITICAL] リーフシーンオブジェクトへの子の追加

間違い:

const sprite = new Sprite(texture);
const overlay = new Sprite(overlayTexture);
sprite.addChild(overlay);

正解:

const group = new Container();
const sprite = new Sprite(texture);
const overlay = new Sprite(overlayTexture);
group.addChild(sprite, overlay);

Sprite、Graphics、Text、Mesh はリーフです。子を追加すると、現在はデプリケーション警告がログに記録され、将来のバージョンではエラーになります。グループ化が必要なときはいつでも Container でラップしてください。

[HIGH] getBounds() が Rectangle を返すことを期待

間違い:

const rect = container.getBounds();
rect.contains(x, y); // TypeError: contains is not a function

正解:

const rect = container.getBounds().rectangle;
rect.contains(x, y);

const bounds = container.getBounds();
console.log(bounds.width, bounds.height);

getBounds() は v8 で Bounds インスタンスを返します。その基本的なゲッター(xywidthheight)は機能しますが、.contains() のような Rectangle 固有のメソッドや Rectangle を必要とする API に渡す場合は、.rectangle プロパティを読み込みます。

[HIGH] cacheAsBitmap の代わりに cacheAsTexture を使用

間違い:

container.cacheAsBitmap = true;

正解:

container.cacheAsTexture(true);

cacheAsBitmap(v7 プロパティ)は v8 で cacheAsTexture()(メソッド)に名前が変更されました。destroy() を呼び出す前に、常に cacheAsTexture(false) で無効にします。

[MEDIUM] container.name の代わりに container.label を使用

name は v8 で label に名前が変更されました。古いプロパティはまだ非推奨エイリアスとして機能します。getChildByLabel は v8 の子を名前で検索する方法です。

[MEDIUM] 同じコンテナに pivot と origin の両方を設定

Pivot はローカル原点のプロジェクションを親空間にシフトします(回転中心を変更することで オブジェクトを移動させる)。Origin は回転/スケール中心を位置を変わらずに変更します。同じコンテナに両方を設定すると、予期しない複合動作が発生します。1 つを選択してください。

API リファレンス

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

詳細情報

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

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

関連スキル

汎用その他⭐ リポ 1,982

superfluid

Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper

by LeoYeAI
汎用その他⭐ リポ 100

civ-finish-quotes

実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。

by huxiuhan
汎用その他⭐ リポ 1,110

nookplot

Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。

by BankrBot
汎用その他⭐ リポ 59

web3-polymarket

Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。

by elophanto
汎用その他⭐ リポ 52

ethskills

Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。

by jiayaoqijia
汎用その他⭐ リポ 44

xxyy-trade

このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。

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