テクスチャとして使用されるファイルの名前を取得します

グレンモース

メートルテクスチャとして使用されるjpgの名前を取得しようとしています。しかし、それを文字列として戻す方法がわかりません。

私はこれを持っています注:CreateCube [1]は配列内のTCubeコンポーネントです

CreateCube[1].Material.Texture.CreateFromFile(gamedir+'\pics\'+blocktype);

ブロックタイプはどこになりますか

grass.jpg
dirt.jpg
snow.jpg
stone.jpg

ect ..しかし、それが割り当てられた後、どのように型を取得するのですか?現在texture、レコードに文字列がありますcube

cube.texture := createCube[i].Material.Texture.?????

どのプロパティが名前を文字列として与えますか?

J..。

コメントでの議論のフォローアップとして、これを行う方法の一例を示します。新しいコンポーネントを作成し、それをプロジェクトに追加します。ここで私はそれを呼び出しましたTextureCube(パッケージを右クリック->インストール。変更するには、右クリック->アンインストールを実行し、変更を加えてから、右クリック->再度インストールします):

ここに画像の説明を入力してください

unit TextureCube;

interface

uses
  System.SysUtils, System.Classes, FMX.Types, FMX.Types3D, FMX.Objects3D,
  Generics.Collections;

type
  TCubeTexture = (ctGrass, ctDirt, ctSnow, ctStone);

  TTextureSource = Class(TComponent)
    private
      FSelectedTexture : TCubeTexture;
      FTextures : TDictionary<TCubeTexture, TBitmap>;
      function GetTexture : TBitmap;
      procedure SetTexture(setTex : TBitmap);
    public
      constructor Create(AOwner : TComponent); override;
      destructor Destroy; override;
      property Textures : TDictionary<TCubeTexture, TBitmap> read FTextures;
    published
      property SelectedTexture : TCubeTexture read FSelectedTexture write FSelectedTexture;
      property Texture : TBitmap read GetTexture write SetTexture;

  End;

  TTextureCube = class(TCube)
  private
    FType : TCubeTexture;
    FTextureSource : TTextureSource;
    procedure SetCubeTexture(cubeTex : TCubeTexture);
    procedure SetTextureSource(texSource : TTextureSource);
  published
    property CubeType : TCubeTexture read FType write SetCubeTexture;
    property TextureSource : TTextureSource read FTextureSource write SetTextureSource;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TTextureCube]);
  RegisterComponents('Samples', [TTextureSource]);
end;

constructor TTextureSource.Create(AOwner : TComponent);
begin
  inherited;
  FTextures := TDictionary<TCubeTexture, TBitmap>.Create();
end;

destructor TTextureSource.Destroy;
begin
  FTextures.Free;
  inherited;
end;

function TTextureSource.GetTexture : TBitmap;
var tex : TBitmap;
begin
  if FTextures.TryGetValue(FSelectedTexture, tex) then
    result := tex
  else begin
    tex := TBitmap.Create(1,1);
    FTextures.AddOrSetValue(FSelectedTexture, tex);
    result := tex;
  end;
end;

procedure TTextureSource.SetTexture(setTex : TBitmap);
begin
  FTextures.AddOrSetValue(FSelectedTexture, setTex);
end;

procedure TTextureCube.SetCubeTexture(cubeTex: TCubeTexture);
var tex : TBitmap;    
begin
  FType := cubeTex;

  if Assigned(FTextureSource) and
     (FTextureSource.Textures.TryGetValue(cubeTex, tex)) then
    self.Material.Texture := tex
  else
    self.Material.Texture.Clear(0);
end;

procedure TTextureCube.SetTextureSource(texSource: TTextureSource);
begin
  FTextureSource := texSource;
  SetCubeTexture(FType);
end;   

end.

これにより、TTextureCubeから継承する新しいキューブクラス提供されます。TCubeキューブは列挙型を追加し、TTextureSource各型のテクスチャを提供するにリンクできますここでは、これらをSamplesコンポーネントツールバーのセクションに追加しました。好きな場所に配置できます。TTextureSourceとTTextureキューブをフォームにドロップすると、すぐに使用できます。これは、フォーム上TTextureCubeのsにsを自動関連付けさせることで明らかに改善できます。TTextureSource今のところ、キューブとソースを関連付けるだけです。

ここに画像の説明を入力してください

ここではわざわざカスタムエディタ/ビューアを作成しませんでした。ここでは、TTextureSource任意のタイプを選択して、そのタイプのテクスチャを設定できます。TTextureSourceは、各キューブタイプに関連付けられたテクスチャのライブラリを保存します。

ここに画像の説明を入力してください

次に、それぞれTTextureCubeについて、キューブタイプを変更するだけで、関連するテクスチャがTTextureSourceから取得されます

ここに画像の説明を入力してください

完全な注意として-私はこれを日曜日の退屈から非常に迅速に書き始めた方法の例として、そしておそらくもう少しエレガントなデザインを組み込む方法の例として書きました。明らかに、私はおそらく多くのことを見逃している、おそらく適切にクリーンアップされていないなどです。これを本番コードで使用するには、もう一度、いくつかの追加の例外処理、バグチェック、および整理を行う必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

テクスチャとして使用されるファイルの名前を取得します

分類Dev

txtファイルを使用してバッチスクリプトの変数を入力する方法。次に、ループして、テキストファイル内のすべての名前を変数として使用します。

分類Dev

ファイルシステムから画像ファイルを削除してから同じ名前の新しい画像ファイルを追加すると、AndroidでURIを使用して追加したときに古い画像が返されます

分類Dev

csvに含まれるテキストを取得して、csvファイルの名前にすることはできますか?

分類Dev

Nunitを使用したテストの名前として(CSVファイルからの)列名を使用します

分類Dev

ディスクに保存されているhtmlファイルのURLとその名前を抽出し、それぞれ印刷します-Python

分類Dev

複数のcsvファイルを読み取り、異なる名前で参照されるリストとしてコンテンツを保存します

分類Dev

ファイルリストを取得し、ファイル名を文字列操作(重複チェック)およびバッチファイルを使用した条件の入力として使用するにはどうすればよいですか?

分類Dev

OpenGL ES 1.1を使用してマルチテクスチャを適用するときに、テクスチャのRGBチャネルをアルファチャネルとして使用する方法はありますか?

分類Dev

バッチスクリプトを使用して、番号変更ファイルの名前を変更します

分類Dev

ファイル名の可変部分とファイル名の固定部分を使用して、ファイルエクスポートに自動的に名前を付けるためのAccessを取得できますか?

分類Dev

Gitは、名前の変更時に、チェックインされたファイルを追跡されていないと見なしています

分類Dev

名前の一部として入力を使用してテキストファイルを作成する

分類Dev

アルファマスクとしてテクスチャを使用するLWJGL

分類Dev

バッチファイルを使用して、コンテンツの名前でzipファイルの名前を変更または作成する方法

分類Dev

perlを使用してテキストファイルの名前を変更すると、テキストファイルの最後に疑問符が表示されます

分類Dev

バッチファイル-sqlcmdを使用してエラーアクセスの取得が拒否されます

分類Dev

チャートを画像としてエクスポートすると、空のファイルが生成されることがあります

分類Dev

PowerShellを使用して、ベース名に偶数が含まれるファイルの名前を変更する

分類Dev

構成済みファイル「xxxx」のリポジトリ「xxxxxenialInRelease」としての取得をスキップすると、アーキテクチャ「i386」はサポートされません。

分類Dev

あるファイルの名前を別のファイルの名前の一部として使用するバッチファイルの書き方

分類Dev

cmdを使用して指定された名前のUSBスティックにファイルをコピーする方法は?

分類Dev

W:リポジトリとして設定されたファイル「main / binary-1386 / Packages」の取得をスキップしています...アーキテクチャ「1386」をサポートしていません

分類Dev

ディレクトリ内の100個のファイルの名前を、テキストファイルに保存されている新しいファイル名に変更します

分類Dev

テキストファイルを使用して、フォルダ内のバッチファイルの名前を変更します

分類Dev

phpを使用してファイルをダウンロードすると、ファイルはフォルダに保存され、ファイルの名前はデータベースに保存されます

分類Dev

バッチファイルを使用して、ファイル名の末尾(ただし拡張子の前)にテキストを追加します

分類Dev

ネストされたファイルシステムは、sync(1)を使用して含まれているファイルシステムの前に同期されることが保証されていますか?

分類Dev

バッチスクリプトを使用して、名前が<>で始まるディレクトリ内の最新のファイルを検索します

Related 関連記事

  1. 1

    テクスチャとして使用されるファイルの名前を取得します

  2. 2

    txtファイルを使用してバッチスクリプトの変数を入力する方法。次に、ループして、テキストファイル内のすべての名前を変数として使用します。

  3. 3

    ファイルシステムから画像ファイルを削除してから同じ名前の新しい画像ファイルを追加すると、AndroidでURIを使用して追加したときに古い画像が返されます

  4. 4

    csvに含まれるテキストを取得して、csvファイルの名前にすることはできますか?

  5. 5

    Nunitを使用したテストの名前として(CSVファイルからの)列名を使用します

  6. 6

    ディスクに保存されているhtmlファイルのURLとその名前を抽出し、それぞれ印刷します-Python

  7. 7

    複数のcsvファイルを読み取り、異なる名前で参照されるリストとしてコンテンツを保存します

  8. 8

    ファイルリストを取得し、ファイル名を文字列操作(重複チェック)およびバッチファイルを使用した条件の入力として使用するにはどうすればよいですか?

  9. 9

    OpenGL ES 1.1を使用してマルチテクスチャを適用するときに、テクスチャのRGBチャネルをアルファチャネルとして使用する方法はありますか?

  10. 10

    バッチスクリプトを使用して、番号変更ファイルの名前を変更します

  11. 11

    ファイル名の可変部分とファイル名の固定部分を使用して、ファイルエクスポートに自動的に名前を付けるためのAccessを取得できますか?

  12. 12

    Gitは、名前の変更時に、チェックインされたファイルを追跡されていないと見なしています

  13. 13

    名前の一部として入力を使用してテキストファイルを作成する

  14. 14

    アルファマスクとしてテクスチャを使用するLWJGL

  15. 15

    バッチファイルを使用して、コンテンツの名前でzipファイルの名前を変更または作成する方法

  16. 16

    perlを使用してテキストファイルの名前を変更すると、テキストファイルの最後に疑問符が表示されます

  17. 17

    バッチファイル-sqlcmdを使用してエラーアクセスの取得が拒否されます

  18. 18

    チャートを画像としてエクスポートすると、空のファイルが生成されることがあります

  19. 19

    PowerShellを使用して、ベース名に偶数が含まれるファイルの名前を変更する

  20. 20

    構成済みファイル「xxxx」のリポジトリ「xxxxxenialInRelease」としての取得をスキップすると、アーキテクチャ「i386」はサポートされません。

  21. 21

    あるファイルの名前を別のファイルの名前の一部として使用するバッチファイルの書き方

  22. 22

    cmdを使用して指定された名前のUSBスティックにファイルをコピーする方法は?

  23. 23

    W:リポジトリとして設定されたファイル「main / binary-1386 / Packages」の取得をスキップしています...アーキテクチャ「1386」をサポートしていません

  24. 24

    ディレクトリ内の100個のファイルの名前を、テキストファイルに保存されている新しいファイル名に変更します

  25. 25

    テキストファイルを使用して、フォルダ内のバッチファイルの名前を変更します

  26. 26

    phpを使用してファイルをダウンロードすると、ファイルはフォルダに保存され、ファイルの名前はデータベースに保存されます

  27. 27

    バッチファイルを使用して、ファイル名の末尾(ただし拡張子の前)にテキストを追加します

  28. 28

    ネストされたファイルシステムは、sync(1)を使用して含まれているファイルシステムの前に同期されることが保証されていますか?

  29. 29

    バッチスクリプトを使用して、名前が<>で始まるディレクトリ内の最新のファイルを検索します

ホットタグ

アーカイブ