DelphiのTStringListについて。TStringListは文字列をリストとして扱うクラス。
宣言
var
sl:TStringList;
初期化
sl := TStringList.Create;
要素を追加
sl.Add(‘abc’);
要素を取得
sl[0];
要素を削除
sl.Delete(0);
セットされた文字列をファイル出力
sl.SaveToFile(pathToString);
DelphiのTStringListについて。TStringListは文字列をリストとして扱うクラス。
var
sl:TStringList;
sl := TStringList.Create;
sl.Add(‘abc’);
sl[0];
sl.Delete(0);
sl.SaveToFile(pathToString);
Delphiのイベントログへの出力について。変数のちょっとした確認などに。
str := ‘test’;
OutPutDebugString(PChar(str));
DelphiのコンポーネントListboxの使い方について。
ListBox1.Items[0]
ListBox1.Items.Add(‘abc’);
ListBox1.Item.Delete(0);
ListBox1.Items.Count
ListBox1.Items.Clear;
Delphiのstring型について。一般的なプログラミング言語にある文字列を扱う型。char型は1文字を扱うがstring型は複数の文字からなる文字列を扱う。string型はchar型が配列となったものと見なすこともできる。その時のアクセス方法はstr[n]と配列を扱うときと同様になる。ただしstring型を配列として扱う場合、要素の0番目は参照できない。要素1番目から文字列1文字目が該当する。
Delphiで配列を使うにはvar節で配列要素数を設定する静的宣言と実行時に配列要素数を決定する動的宣言をする。要素数を動的に扱う配列が一般的だと思うのでそれについて記述する。
var
ar: array of char;
begin
SetLength(ar,10);
end;
begin
ar[0]:=’abc’;
ar[1]:=’def’;
ar[2]:=’ghi’;
end;
begin
for i:=0 to Length(ar)-1 do begin
OutPutDebugString(PChar(ar[i]));
end;
end;
アプリケーションが実行中のディレクトリを取得。exeファイルのある場所。
val := ExtractFilePath(Application.ExeName);
ゲームエンジンのGame GuruというソフトウェアでCinema4Dで作成したモデルをインポートしてみようと思ったが上手くいかない。GameGuruは3Dモデルのインポート機能を搭載しているが、cinema4dで作成されたオブジェクトはどうしても受け付けてくれない。cinema4dにはエクスポートする機能で多彩なフォーマットに対応しており、GameGuruが採用しているDirect3Dというフォーマット(.x)形式でもエクスポートすることができるが、ロードすることができない。
ググってみたところ、https://youtu.be/tDXXFDVfnBI この動画がいいところまで行っているように見えるが、最後は何もマップ上で表示されないという結末で終わっている(´Д`;)
他にも色々調べたが、どうもcinema4dはgameguru開発には相性が悪い様子。理由はわからないがうまく行っている人も見当たらない。その他にはAutodesk 3ds Maxというモデリングソフトであれば成功したという人を見つけた。
他にも使えそうな3Dモデリングソフトが見つかったら追記予定
嘘でした。使えます。私の調べ不足と不注意。Cinema4dでモデリングしてDirectX形式でエクスポートしてGameGuruで取り込めば普通にレンダリングされるし、ゲーム内でも表示されることを確認。失敗していたのはそれ以外のファイルタイプでやっていたから。.xタイプのファイル以外にも取り込むことができそうだったけれどそれに失敗していた。
ちなみに同じことが無料の3Dモデリングソフトのblenderでもできる。初期状態ではDirectX形式で出力できないのでユーザー設定からアドオンを追加するだけで出力できるようになる。
色々迷走しながらblenderも試用してみたが、無料なのにcinema4dと同じようなことができるのに驚いた。操作感とUIは大分違うが機能的にはあまり変わらないんじゃないだろうか・・・。有料でそれなりに高価なcinema4dの方が多少は使いやすく洗練されているような気もするが。
npmサーバーをデバッグで起動していて、例のWindowsアップデートで強制再起動をかけられてしまったため妙なことになった。大したことないだろうと思って再度起動してみると下記のようなエラーを吐くようになった。一応サーバーを再起動してみたんだが、同じエラーが出るのは不可解。というのもエラーの内容を見る限りポート80が既に使われているというような内容のようだが、ポート80は私のコードでは使ってないのだが。それに再起動までしたのに。
events.js:165
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE :::80
at Server.setupListenHandle [as _listen2] (net.js:1342:14)
at listenInCluster (net.js:1383:12)
at Server.listen (net.js:1471:7)
at Object. (/home/nakahira/nodejs/server.js:52:4)
at Module._compile (module.js:649:30)
at Object.Module._extensions..js (module.js:660:10)
at Module.load (module.js:561:32)
at tryModuleLoad (module.js:501:12)
at Function.Module._load (module.js:493:3)
at Function.Module.runMain (module.js:690:10)
Emitted 'error' event at:
at emitErrorNT (net.js:1362:8)
at process._tickCallback (internal/process/next_tick.js:114:19)
at Function.Module.runMain (module.js:692:11)
at startup (bootstrap_node.js:194:16)
at bootstrap_node.js:666:3
psコマンドで該当するプロセスをkillしてみるかと調べたがよくわからないので、ポート80を使っているかもしれないプロセスを強制的にkill
kill -9 $(lsof -t -i:80)
これでnpm startとしたら起動するようになったが、まだ正常稼働にはいたらない。
追記で、異常終了した場合にnpmのpackage.jsonというファイルが紛失していることを確認した。npm init -yで復帰することはできたが色々とわからない現象が多い。
DirectShowを使いやすくしたライブラリ。動画の再生やウェブカメラ映像の保存などの機能を使いたいときに使うライブラリかもしれない。
画像無しで矩形スプライトを作成する
var sprite = cc.Sprite.create();
sprite.setTextureRect(cc.rect(0,0,100,100));
sprite.setAnchorPoint(0.5, 0.5);
sprite.setPosition(size.width / 2, size.height / 2);
sprite.setColor(cc.color(128,0,0));
currentScene.addChild(sprite, 0);