Progression Forum
9月 03, 2010, 02:42:33 午前
ようこそ
ゲスト
さん。まずは、
ログイン
するか、
ユーザ登録
してください。
アクティべーションメール
送られて来ませんでしたか?
1時間
1日
1週間
1ヶ月
期間限定無し
ユーザ名、パスワード、クッキー保持期間を入力してログインして下さい。
お知らせ
:
ホーム
ヘルプ
検索
ログイン
登録
Progression Forum
>
サポート
>
コンポーネントのバグを報告
>
エフェクトのdurationが1秒単位でしか設定できない
ページ: [
1
]
←前へ
次へ→
印刷
投稿者
スレッド: エフェクトのdurationが1秒単位でしか設定できない (参照数 9768 回)
miyasuke
初心者
投稿: 1
エフェクトのdurationが1秒単位でしか設定できない
«
投稿日::
2月 17, 2009, 12:56:10 午前 »
はじめまして。
つい先日より、Progressionを使用させていただいております。
現在、ページ遷移のエフェクトコンポーネント(BlindsEffect、WipeEffectなど)で、
durationの値を1000ms(1秒)よりも短く設定しようとしたところ、逆に継続時間が長くなってしまうという現象が発生しております。
もし仕様でしたら申し訳ありませんが、失礼ながら仕様ではないと仮定して以下書かせていただきます。
まず、現状としては、目視による観察より、
durationの値が 1000のときと、1999のときとで、エフェクトの継続時間に変化がみられませんでした。
一方、1999のときと、2000のときとでは、明確に継続時間に変化が見られました。
このことから、現状では、エフェクトコンポーネントのdurationは、値1000単位(実質1秒単位)でしか設定できないものと思われます。
私の方で原因を調査してみましたところ、下記の点が主な原因となっていると思われます。
詳しいところまでは調べておりませんので、こちらが正しいかどうかはわかりませんが、調査していただければ幸いです。
----------------------------------
・DoTransitionクラス(パッケージ:jp.progression.commands)
コンストラクターの第4引数(duration)の型がint型指定で、これがそのまま秒数として扱われている。
<行数: 163, 181>
・EffectBaseクラス(パッケージ:jp.progression.core.casts.effects)
_castAddedメソッド、_castRemovedメソッドにおいて、DoTransitionインスタンスを生成する際に、
コンポーネントのパラメータで入力したdurationの値(int型)に対し、 duration/1000 を第4引数にあてている。
(ms単位のint値が、int値1000で割られ、小数点以下が切り捨てられた上で、秒数とされている可能性がある)
<行数: 96~103>
----------------------------------
【当方環境】
OS: Windows Vista
オーサリングツール: Adobe Flash CS3 Professional
Progression バージョン: 3.1.42
以上、よろしくお願いいたします。
IP記録
flabaka
コミッター
新参メンバー
投稿: 90
Re:エフェクトのdurationが1秒単位でしか設定できない
«
返信する #1 投稿日::
2月 17, 2009, 03:34:31 午前 »
>miyasukeさま
はじめまして。
僕も試してみたところ、miyasukeさまと同じ現象を確認致しました。
1.1000と1999の時では、違いが見られない
これはmiyasukeさまが仰られている様にdurationがint型になっているためだと思います。
trace(int(1));とtrace(int(1,9));を実行してみると、小数点以下は切捨てられているので、どちらも1と表示されます。
ですので、1000と指定しても、1999と指定しても、(最終的には)どちらも1秒として扱われているから、違いが見られません。
2.1999と2000の時では、違いが見られる
これも先と同様で、1999は1秒。2000は2秒として扱われているので、表示に違いが見られます。
3.500と指定した場合、継続時間が長くなった
500と指定した場合ですが、trace(int(0.5));と同じになるので、小数点以下が切り捨てられ、0秒と表示されるはずですよね?
しかし、実際には2秒くらいに表示されてしまいます。
これは、どうやらfl.transitionクラスが関係しているみたいです。
Transition.asクラスの94~103行目あたりにこんな記述があります。
function set duration (d:Number):Void {
if (d) {
this._duration = d;
this._twn.duration = d;
}
};
function get duration ():Number {
return this._duration;
};
dが0だと、set duration内がスルーされて、44行目で適宜されている値(private var _duration:Number = 2;)を拾ってきます。
ですので、durationを500ミリ秒と設定すると、エフェクトが2秒で表示されてしまうのではないでしょうか?
(開発者のtaka:niumさまでないので正しいことは言えませんが)現状では1000ミリ秒以下を設定してしまうと、fl.transitionのせいで(自動的に)2秒になってしまうと思われます。
IP記録
ページ: [
1
]
印刷
←前へ
次へ→
ジャンプ先:
行き先を指定してください:
-----------------------------
ラウンジ
-----------------------------
=> こんな記事を書きました
=> Progression事例
=> 雑談
-----------------------------
Progression3
-----------------------------
=> 全般
=> クラススタイル
=> タイムラインスタイル
=> コンポーネントスタイル
=> 拡張機能
-----------------------------
Progression4
-----------------------------
=> 全般
=> クラススタイル
=> タイムラインスタイル
=> コンポーネントスタイル
=> 拡張機能
-----------------------------
ディスカッション
-----------------------------
=> 提案
=> リクエスト
=> ベータテスト
-----------------------------
サポート
-----------------------------
=> Progression 4.0 パブリックベータテスト不具合報告
=> アプリケーションのバグを報告
=> コンポーネントのバグを報告
=> クラスライブラリのバグを報告
=> その他のバグを報告
Loading...