C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: storyboardが再生中かどうかを判定する


(過去ログ 107 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■64013 / inTopicNo.1)  storyboardが再生中かどうかを判定する
  
□投稿者/ WPFむずかしい (1回)-(2012/11/02(Fri) 10:54:02)

分類:[C#] 

お世話になります。
掲題の通り、StoryBoardが再生中かどうかを判定したいのですが
下記に記載したコードではGetCurrentStateにてInvalidOperationExceptionが発生してしまします。
どのようにすればよいのでしょうか?
http://msdn.microsoft.com/ja-jp/library/cc672521.aspx
http://msdn.microsoft.com/ja-jp/library/ms741997(v=vs.90).aspx
を参考にしているのですが、特にBeginとStopの第一パラメータのFrameworkContentElementが理解できていません。

また、試に例外の発生するGetCurrentStateをコメントアウトし、Stopのみにすると
StoryBoardが停止している際にStopを実行すると以下の警告が発生しました。
System.Windows.Media.Animation Warning: 6 :
 Unable to perform action because the specified Storyboard was never applied to this object for interactive control.;
 Action='Stop'; Storyboard='System.Windows.Media.Animation.Storyboard';
 Storyboard.HashCode='44298808';
 Storyboard.Type='System.Windows.Media.Animation.Storyboard';


UserControl内のコード抜き出し

storyHide = (Storyboard)FindResource("Hide");

private void BtnStart_Click(object sender, EventArgs e)
{
   storyHide.Begin(this,true);
}

private void BtnStop_Click(object sender, EventArgs e)
{
   if (storyHide.GetCurrentState(this) == ClockState.Active)
   {
      storyHide.Stop(this);
   }
}

よろしくお願いします。

引用返信 編集キー/
■64017 / inTopicNo.2)  Re[1]: storyboardが再生中かどうかを判定する
□投稿者/ howling (37回)-(2012/11/02(Fri) 16:13:52)
WPFむずかしいさん

WPFでニコニコ動画ちっくなプロトタイプを作ったことがあります。
5年くらい前なのでもうほとんど覚えてないんですが、ムービー再生部分で結構手間取った記憶があります。
それ以外はUIがかなりしっかりしてるので楽だなぁと。また触ってみたいです。

さて、ご提示頂いたURLを見てみました。
特に2番目のサンプルがわかりやすいので良かったのですが…質問があります。

・開発環境が書かれていないのですが、対応してますよね?サンプルコードが動くようなら問題ないです。
・当然ご提示頂いたコードのthisは、描画可能なコントロールの何か…ですよね?

上記が問題無いという上で、ですが…。
サンプルコードを見る限り、Beginする際にtrueを指定することでうまくいくと思います。
つまり、ご提示頂いたコードが問題ではないです。

サンプルコードを見る限り、Beginを行う前提条件として、

「アニメーションを行うターゲット」の名称を登録。
「アニメーションを行うターゲット」と、「アニメーションデータ(時間などを指定したもの)」を紐づける。
その上でStoryboardに「アニメーションデータ」を子供として追加。
StoryBoardのターゲットとして「アニメーションを行うターゲット」を指定。

という流れが必要だと思います。

これのどこかが間違っていると思うのですが…さすがにどうやっているのかわからないので謎です。

調べてみてはいかがでしょうか?
引用返信 編集キー/
■64029 / inTopicNo.3)  Re[2]: storyboardが再生中かどうかを判定する
□投稿者/ WPFむずかしい (2回)-(2012/11/05(Mon) 10:46:17)
2012/11/05(Mon) 10:46:49 編集(投稿者)
2012/11/05(Mon) 10:46:45 編集(投稿者)

<pre><pre>■No64017 (howling さん) に返信

ご返信ありがとうございます。
色々調べた結果できました。
書いたコードではthisを使用していますがアニメーション対象が複数あるのでthisではなく

storyHide = (Storyboard)FindResource("Hide");
の後に
storyHide.Name="storyHide";//名称は任意の名称でOKを追加し、各BeginとStopのthisを消せばOKでした。
ちなみに、InvalidOperationExceptionが発生するのはBeginを実施しないでStopを実行すると
例外が発生することが分かりましたので、Beginの箇所にフラグを追加しました。

修正後コード
storyHide = (Storyboard)FindResource("Hide");
storyHide.Name="storyHide";
bool blStart=false;

private void BtnStart_Click(object sender, EventArgs e)
{
storyHide.Begin();
blStart=true;
}

private void BtnStop_Click(object sender, EventArgs e)
{
if(!blStart)return;
if (storyHide.GetCurrentState(this) == ClockState.Active)
{
storyHide.Stop(this);
}
}</pre></pre>
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -