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

pixijs-scene-gif

PixiJS v8でアニメーションGIFを表示する際に使用するスキル。`pixi.js/gif`のside-effectインポート、`Assets.load`による`GifSource`の取得、`GifSprite`の再生制御(`play`/`stop`/`currentFrame`/`animationSpeed`)、`autoPlay`/`loop`オプション、`onComplete`/`onLoop`/`onFrameChange`コールバック、`GifSource`の共有・`clone`・`destroy`までを網羅する。

description の原文を見る

Use this skill when displaying animated GIFs in PixiJS v8. Covers the pixi.js/gif side-effect import, Assets.load returning a GifSource, GifSprite playback (play/stop/currentFrame/animationSpeed), autoPlay/loop options, onComplete/onLoop/onFrameChange callbacks, GifSource sharing, clone, destroy. Triggers on: GifSprite, GifSource, pixi.js/gif, animationSpeed, currentFrame, autoPlay, onComplete, onFrameChange, constructor options, GifSpriteOptions.

SKILL.md 本文

GifSprite はアニメーション GIF をディスプレイオブジェクトとして再生します。Assets.load('animation.gif') は (Texture ではなく) GifSource を返し、これを GifSprite でラップします。GIF ローダー拡張を登録するには、サイドエフェクト import 'pixi.js/gif' が必須です。

pixijs-scene-core-concepts に精通していることを想定しています。GifSpriteSprite を拡張するため、リーフです。その内側に子要素をネストしないでください。複数の GifSprite インスタンスをグループ化するには、それらを Container でラップしてください。

クイックスタート

import "pixi.js/gif";
import { GifSprite } from "pixi.js/gif";

const source = await Assets.load("animation.gif");

const gif = new GifSprite({
  source,
  autoPlay: true,
  loop: true,
  animationSpeed: 1,
});

gif.anchor.set(0.5);
gif.x = app.screen.width / 2;
gif.y = app.screen.height / 2;

app.stage.addChild(gif);

[!NOTE] GIF はすべてのフレームを個別のキャンバステクスチャにデコードします。フレームが多いパフォーマンスクリティカルなアニメーションでは、AnimatedSprite を使用したスプライトシートを優先してください。単一のアトラステクスチャを使用し、GPU でのバッチ処理が優れています。

関連スキル: pixijs-scene-core-concepts (シーングラフの基本)、pixijs-scene-sprite (スプライトシートベースのアニメーション用 AnimatedSprite)、pixijs-assets (Assets.load、キャッシング、アンロード)、pixijs-ticker (フレームタイミング)、pixijs-performance (テクスチャメモリ)。

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

GifSpriteOptionsOmit<SpriteOptions, 'texture'> を拡張します。texture は内部的に管理されます (source.textures[0] から設定され、フレームごとに入れ替わります)。その他すべての Sprite オプション (anchorscaletintroundPixels など) および Container オプション (positionscaletintlabelfilterszIndex など) も有効です。詳細は skills/pixijs-scene-core-concepts/references/constructor-options.md を参照してください。

GifSpriteOptions で追加されるリーフ固有のオプション:

オプションデフォルト説明
sourceGifSource必須。Assets.load('file.gif') で返される解析済み GIF データ。複数の GifSprite インスタンス間で共有可能。
autoPlaybooleantrue構築時に直ちに再生を開始します。false の場合、gif.play() を呼び出して開始する必要があります。
loopbooleantrue最後のフレームに達したときにアニメーションを繰り返します。false の場合、スプライトは最終フレームで停止し、onComplete を発火します。
animationSpeednumber1GIF のネイティブフレームタイミングの乗数。2 は 2 倍速、0.5 は半分の速度で実行されます。
autoUpdatebooleantrueTicker.shared への再生を接続します。false に設定して、gif.update(ticker) 経由で更新を自分で駆動します。
fpsnumber30フレームごとの遅延を指定しない GIF のフォールバックフレームレート。
onComplete() => void | nullnull非ループアニメーションが最後のフレームに達したときに呼び出されます。
onLoop() => void | nullnullループアニメーションがラップアラウンドするたびに呼び出されます。
onFrameChange(frame: number) => void | nullnull表示されるフレームインデックスが変わるたびに呼び出されます。
scaleModeSCALE_MODE'linear'v8.13.0 以降非推奨。代わりに Assets.load(..., { data: { scaleMode } }) 経由で scaleMode を渡してください。

コンストラクタは単独の引数として裸の GifSource も受け入れることができます (new GifSprite(source))。これは上記のデフォルト値を使用した new GifSprite({ source }) の短縮形です。

コアパターン

セットアップとサイドエフェクトインポート

import "pixi.js/gif";
import { Assets } from "pixi.js";
import { GifSprite } from "pixi.js/gif";

const source = await Assets.load("animation.gif");
const gif = new GifSprite({ source });

pixi.js/gifextensions.add(GifAsset) を呼び出し、.gif をアセットローダーに登録します。これなしでは、Assets.load は GIF ファイルを認識しません。GifSpriteGifSourcepixi.js/gif からエクスポートされており、pixi.js からではありません。

pixi.js/gif から名前付きエクスポートをインポートすると、サイドエフェクトもトリガーされるため、そのパスからインポートしない場合、単なる import 'pixi.js/gif' のみが必要です。

再生制御

const gif = new GifSprite({ source });

gif.play();
gif.stop();

gif.currentFrame = 5;
gif.animationSpeed = 2;
gif.animationSpeed = 0.5;

gif.playing; // 読み取り専用
gif.progress; // 0-1 再生位置
gif.totalFrames; // フレーム数
gif.duration; // ミリ秒単位の総時間

autoPlay: true (デフォルト) は直ちに再生を開始します。loop: true (デフォルト) は繰り返します。animationSpeed は GIF のネイティブフレームタイミングの乗数です。currentFrame はゼロベースです。

ロードオプション

const source = await Assets.load({
  src: "animation.gif",
  data: {
    fps: 12,
    scaleMode: "nearest",
    resolution: 2,
  },
});

const fromDataUri = await Assets.load("data:image/gif;base64,R0lGODlh...");

data 内のオプションは GifSource.from に渡されます。fps は、タイミングを指定しない GIF のフォールバックフレーム遅延を設定します。scaleModeresolution は、各フレーム用に作成されるキャンバステクスチャを制御します。ローダーは .gif ファイル拡張子と data:image/gif URI の両方に対応しています。

コールバック

const gif = new GifSprite({
  source,
  loop: false,
  onComplete: () => console.log("animation finished"),
  onLoop: () => console.log("loop completed"),
  onFrameChange: (frame) => console.log("now on frame", frame),
});
  • onComplete は非ループアニメーションが最後のフレームに達したときに発火します。
  • onLoop はループアニメーションがラップアラウンドするたびに発火します。
  • onFrameChange は表示されるフレームが変わるたびに発火します。

手動更新モード

const gif = new GifSprite({ source, autoUpdate: false });

app.ticker.add((ticker) => {
  gif.update(ticker);
});

autoUpdate: falseTicker.shared から切断されます。gif.update(ticker) を自分で呼び出し、任意の Ticker インスタンスを渡します。アニメーションがプライベートティッカー (例:ポーズ対応のゲームティッカー) によって駆動されるべき場合に有用です。

ソースデータの共有とクローン

const source = await Assets.load("animation.gif");

const gif1 = new GifSprite({ source, autoPlay: true });
const gif2 = new GifSprite({ source, autoPlay: false });

const gif3 = gif1.clone();
gif3.animationSpeed = 0.5;

GifSource は複数の GifSprite インスタンス間で共有できます。各スプライトは独立した再生状態を持ちます。clone() はすべての再生設定をコピーして、独立したインスタンスを作成します。

よくある間違い

[HIGH] pixi.js/gif をインポートしない

間違い:

import { Assets } from "pixi.js";
const gif = await Assets.load("animation.gif");

正解:

import "pixi.js/gif";
import { Assets } from "pixi.js";
const source = await Assets.load("animation.gif");

GIF ローダー拡張は、ロード前に登録する必要があります。サイドエフェクトインポートなしでは、ローダーは .gif ファイルを認識せず、ロードが失敗するか、生データが返されます。

[MEDIUM] Assets.load が Texture を返すと期待する

間違い:

const texture = await Assets.load("animation.gif");
const sprite = new Sprite(texture);

正解:

const source = await Assets.load("animation.gif");
const gif = new GifSprite({ source });

GIF での Assets.load はフレームテクスチャとタイミングデータを含む GifSource を返します。ソースを GifSprite に渡します。単一の静止フレームの場合は、source.textures[0] を読み取ります。

[MEDIUM] GIF メモリが破棄時にリリースされない

間違い:

gif.destroy();
// GifSource とフレームテクスチャはメモリに残る

正解:

gif.destroy(true);
// または
await Assets.unload("animation.gif");

GIF フレームはデコード済みピクセルデータを個別のキャンバステクスチャとして保持しています。gif.destroy() (または destroy(false)) はスプライトを破棄しますが、GifSource はそのままです。true を渡してソースも破棄します。共有ソースの場合、最後のコンシューマーが完了したときのみ破棄するか、Assets.unload を呼び出してアセットキャッシュに処理を任せます。

[LOW] GifSprite 内に子要素をネストしない

GifSpriteSprite を拡張し、allowChildren = false を設定します。これはリーフです。GIF を他のディスプレイオブジェクトとグループ化するには、すべてを plain な Container でラップしてください:

const group = new Container();
group.addChild(gif, label);

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