[phina.js] 이미지의 색상을 변경하는 방법 (마스크)



이미지의 색상을 변경하는 함수 만들기




// 画像マスク用の関数を定義
function maskImage(imageKey, color, distKey) {
  var original = AssetManager.get('image', imageKey).domElement;

  // 画像生成用にダミーのシーン生成
  var dummy = DisplayScene({
    // 元画像と同じサイズにする
    width: original.width,
    height: original.height,
    // 背景色を変更したい色にする
    backgroundColor: color,
  });

  var originalSprite = Sprite(imageKey).addChildTo(dummy);

  // 描画の位置を変更
  originalSprite.setOrigin(0, 0);
  // 描画方法をマスクするように変更
  originalSprite.blendMode = 'destination-in';

  // シーンの内容を描画
  dummy._render();

  // シーンの描画内容から テクスチャを作成
  var texture = Texture();
  texture.domElement = dummy.canvas.domElement;
  if (distKey) {
    AssetManager.set('image', distKey, texture);
  }
  return texture;
}


사용법


AssetManager 에 추가한 다음 사용하거나 직접 텍스처로 사용할 수 있습니다.maskImage(色を変えたい asset, 変更後の色, 新しい asset の名前)

// あらかじめ読み込んである 'kumo' という画像から '青いくも' という asset を生成
maskImage('kumo', 'blue', '青いくも');
Sprite('青いくも').addChildTo(this);

// 直接テクスチャとして使う
var texture = maskImage('kumo', 'pink');
Sprite(texture).addChildTo(this);


처리 흐름


  • 처리 할 이미지와 동일한 크기의 이미지 처리를위한 장면을 만듭니다
  • 장면의 배경색을 변경하려는 색상으로 설정
  • Sprite에서 장면에 색을 바꾸려는 이미지를 추가합니다
  • Sprite blendModedestination-in 로 한다
  • 장면 _render() 메서드 호출
  • 장면 .canvas.domElement 에서 Texture 생성
  • distKey있는 경우 새로 AssetManager로 설정
  • 생성된 Texture 반환

  • 이미지 생성 방법은 여기에서도 설명합니다.
    phina.js의 Shape를 여러 정리하여 이미지로 사용 - Qiita

    샘플

    좋은 웹페이지 즐겨찾기