• 締切済み

DirectXの「アニメーションが最後まで再生されたら」という条件

DirectXで「アニメーションが最後まで再生されたら、そのアニメーションを消す」という処理をしたいと思っているのですが、 それをどうやって実現すればいいのか悩んでいます。 現在は下記のようにプログラミングしているのですが、なぜか条件文に入りません。 //現在のアニメーション情報の取得 LPD3DXANIMATIONSET AnimetionSet; //アニメーションセットへのポインタ double localtime=0; //ローカルタイム double period=0; //アニメーションの長さの最大値 対象のアニメーションコントローラー->GetAnimationSet( 0, &AnimetionSet ); //現在のアニメーション情報をセット if( AnimetionSet ) { period = AnimetionSet->GetPeriod(); //アニメーションの長さの取得 localtime = AnimetionSet->GetPeriodicPosition( 対象のアニメーションコントローラー->GetTime() ); //アニメーションのグローバルタイムをローカルタイムに変換 } //ローカルタイムが最大値になるか、もしくは超えたら if( localtime >= period ) { //ここにアニメーションを消す処理を書いている }

みんなの回答

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.1

DirectX使ったこと無いのですが 根本的な疑問として何処で再生完了待ちしてるんでしょうか? if文では完了待ちになりませんよね?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 現在時刻をミリ秒まで取得

    お疲れ様です 現在時刻をミリ秒まで取得がしたいです。 今はtime_tを使って秒までは取得したのですがミリ秒は構造体にないらしく同じようにとってはこれないのでしょうか? また別のやり方だとどんなのがあるか教えてください。 現在は下記のように取得してyyyymmddhhmmssの形を作ってます。 これをyyyymmddhhmmsssssのようにミリ秒を増やしたたいのです。 長くなってしまいましたがよろしくお願いします time_t timer; time(&timer);/* 現在の時刻を取得 */ struct tm *local; local =localtime(&timer);/* 地方時の構造体に変換 */ CString time; //CString用の時間 time.Format("%4d%02d%02d%02d%02d%02d" ,local->tm_year + 1900,/* 年 */ local->tm_mon+1,/*月は0から始まるので1を+*/ local->tm_mday,/* 日 */ local->tm_hour,/* 時 */ local->tm_min,/* 分 */ local->tm_sec);/* 秒 */

  • IF条件文について

    こんばんわ 宜しくお願いします $time = time(); $ltime = localtime($time,1); $nowyear=$ltime["tm_year"] + 1900; $nowmonth= $ltime["tm_mon"] + 1; if ($nowmonth=12) { $nextmonth=1; } else { $nextmonth=$ltime["tm_mon"] + 2; } echo'<DIV CLASS="box10">'; echo'<strong><font size="4" color="black">'; echo $nextmonth . "月の商品です"; echo"</font></strong>"; echo"</DIV >"; 以上のように12月であった場合13月にならない様にしたいのですが常に1月が取得されてしまいます。 何がいけないのでしょうか?

    • ベストアンサー
    • PHP
  • 現在日時から、任意の時日時を求めるには

    いつもお世話になっています。 いま、現在時刻を取得し、その日付からみて1日前のAM6時へ設定するという処理を作りたいのですが、思うようにできない状態です。 多分、"time(&timer)"で現在時刻を取得し、localtime関数で構造体へ変換してから、値を変更するのだと思うのですが、その部分の処理がうまくできません。 どうかアドバイスをよろしくお願いします。 #include<stdio.h> #include<time.h> void main(){ /* ----------- [ 変数の宣言 ]*/ int i; int sts; int res; time_t timer; time_t ans; struct tm *t_st; /* 現在時刻を取得 */ time( &timer ); t_st = localtime(&timer); t_st->tm_mday - 1; /* ←"コードは意味を持たない"という警告が発生*/ t_st->tm_hour = 6; timer = mktime(t_st); t_st = localtime(&timer); sprintf("%Y/%m/%d %H:%M", -- 以下略 -- }

  • localtimeについて

    まだCGIを勉強はじめのなのですが、localtimeについて質問させてください。 書籍で時間取得には ($sec,$min,$hour,$mday,$mon,$year,$wno) = localtime(time); とし、time関数で得たものをlocaltime関数で整形 といった事が書かれています。 まずわからないのが最初の ($sec,$min,$hour,$mday,$mon,$year,$wno) = の部分なのですが、カッコ内に変数を並べるというのはどういった命令なのでしょうか?書籍ではここまででこのような使い方や記述は出てきていないので、それ自体がよく理解できずにいます。それとも($sec,$min,$hour,$mday,$mon,$year,$wno) = localtime(time);をおきまりパターンとしてワンセットで覚えるべき事なのでしょうか。 続いてlocaltime(time)ですが、これは()内のtime関数によって取得された1970年基準からの秒数を、localtimeによって英語圏での標準的な日付時間表記に直して表示するという事で良いのですよね? これが、なぜ ($sec,$min,$hour,$mday,$mon,$year,$wno) とすることで各変数に割り振ることができるのかがよく分かりません。 これらはおきまりパターンとして覚えるべき事なのでしょうか?それとも配列のようにあるパターンに乗っ取って書かれ得いる事で他に応用がきくような意味合いのものなのでしょうか? ご教授いただきたく思います。 よろしくお願いします。

    • 締切済み
    • CGI
  • 複数条件のDLOOKUP文が上手く使用できない

    現在、ACCESSVBAを用いての作業を行っているのですが、 判定条件として複数条件をDLOOKUP文を使用すると実行時にエラーとなるなどして、 上手く動作しません。 おかしな点がありましたら指摘していただけますでしょうか。 対象テーブルのフィールドAAA~は全てテキスト型となっております。 Me!txtはフォーム上から取得した値、 aaaaはそこまでの処理に使用した変数、 rsはレコードセットとなっております。 レコードセットはExcelのセルを読み取ったデータが格納されており、 これらの変数はそのまえの処理で正常に取得を確認しています。 If DLookup("AAA", "TBL", _"BBB ='" & Me!txt & "'" And _"CCC = '" & aaaa & "'" And _"CCC = '" & Left(rs(1), 3) & "'") = Null Then よろしくお願いいたします。

  • VB6.0でアニメーション

    現在VB6.0で簡単なアニメーションの作成を行おうと思っています。 あまりプログラミングが得意ではないので、分かる人教えてください。 一応自分なりに以下の様なプログラムを書いてみました。 やりたいことは、4枚の画像を使って、その画像をパラパラ漫画の様に アニメーションにしたいです。 処理方法としては、コマンドをクリックすると、タイマーが動きだして 画像がパラパラと変化するような感じにしたくて、以下の様にしました。 このプログラムだと、はじめの画像の次に最後の画像(anime3)が出てきてしまいます。 はじめの画像の次にanime0→anime1→anime2…と画面に表示されるようにするためにはどのようにしたらいいですか? 分かる人がいたら教えて頂きたいです。 よろしくお願い致します。 ●プログラムソース Private Nekos(3) As IPictureDisp Private Sub Command1_Click() Timer1 = True End Sub Private Sub Form_Load() Timer1 = False End Sub Private Sub Timer1_Timer() Dim anime As Long anime = 0 For anime = 0 To 3 Set Nekos(anime) = LoadPicture("F:\yobi_0406\glad\neko" & anime & ".bmp") Image1.Picture = Nekos(anime) anime = (anime + 1) If anime > 3 Then anime = 0 End If Next anime End Sub

  • ドメインコントローラの時計あわせ方法

    Windows2003 Standard R2でドメインコントローラを構築しています。ドメインコントローラの時計が狂っており、定期的に時刻を合わせるタスクを登録しようと考えています。ドメインコントローラはLAN内にあり、外部へTCP接続するにはプロキシを経由する必要があります。つまりTCP:123は使用できません。幸いUDP:123はファイアウォールを通過できるのですが、Windows 2003でUDP:123を使用して時計を合わせるのは、どのようなコマンドを打てばいいのでしょうか? 以下コマンドを打った後で、 net time /setsntp:time.windows.com 以下コマンドを実行したところ・・・ net time /set 以下のようにメッセージが表示され、ドメインコントローラ自身(ローカルホスト)と同期していまいます。これでは時計を合わせることはできません。 ----------------------------------- (ドメインコントローラ名) の現在の時刻は 2009/10/30 1:28 です ローカル コンピュータの現在の時刻は 2009/10/30 1:28 です ローカル コンピュータの時刻を (ドメインコントローラ名) と合わせますか? (Y/N) [Y]:

  • Perl 水曜日に処理を変えたい

    人の作ったものですが、月曜午前0時で処理を切り替えるようになっています。 これを水曜午前0時に変更するにはどうすればいいでしょうか? 長いですがよろしくお願いします。 sub GetNextWDayTime { my $time = time; my ($sec, $min, $hour, $wday) = (localtime($time))[0,1,2,6]; my $now = ($wday * 60 * 60 * 24) + ($hour * 60 * 60) + ($min * 60) + $sec; my $next = ($_[0] * 60 * 60 * 24) + ($_[1] * 60 * 60) + ($_[2] * 60) + $_[3]; #if $next is small, $next is next week. if($next < $now){ $time = $time + (60 * 60 * 24 * 7); } $time = $time + (($_[0] - $wday) * 60 * 60 * 24); $time = $time + ($_[3] - $sec); $time = $time + (($_[2] - $min) * 60); $time = $time + (($_[1] - $hour) * 60 * 60); return $time; } sub GetLastWDayTime { my $time = time; my ($sec, $min, $hour, $wday) = (localtime($time))[0,1,2,6]; my $now = ($wday * 60 * 60 * 24) + ($hour * 60 * 60) + ($min * 60) + $sec; my $last = ($_[0] * 60 * 60 * 24) + ($_[1] * 60 * 60) + ($_[2] * 60) + $_[3]; #if $last is large, $last is next week. if($last > $now){ $time = $time - (60 * 60 * 24 * 7); } $time = $time + (($_[0] - $wday) * 60 * 60 * 24); $time = $time + ($_[3] - $sec); $time = $time + (($_[2] - $min) * 60); $time = $time + (($_[1] - $hour) * 60 * 60); return $time; }

    • ベストアンサー
    • Perl
  • C言語 DBから取得したdate型の変換

    お世話になってます。 標題についてご教授いただけないでしょうか。 C言語でPHPのようにDBから取得したデータをフォーマット変換したいのですが、 localtimeを変換する処理はあるけど、取得したデータをって言うのがなかなかなくて PHPだと date('Y年m月d日', strtotime($start_time); 以上、宜しお願いします。

  • perlで時差の取得

    こんにちは。 perlで現在のサーバーにおける時差を取得するにはどうしたらよいのでしょうか? ローカル時刻ではなくて、「時差」そのものを知りたいのです。 環境変数TZは設定されていますが、'Japan'となっていたりで、これだけでは時差がわかりません。 localtime(0)から求める方法もありそうですが、あまりスマートな感じがしないです。 なにか良い方法はないものでしょうか?

    • ベストアンサー
    • Perl