アクション スクリプト ビデオを検索するためのスライダーを作成しました。私が何に取り組んでいるかを見ることができれば、よりよく理解できるかもしれません: http://www.stevevo.sin.khk.be/Website%202SDesign/ -> これは私がいるウェブサイトのテストサーバーのリンクです建物が走っています。中央に巨大なバナーが表示されます。ロールオーバーすると、スライダーと一時停止/開始ボタンが表示されます。スライダーは、1つの小さなことを除いてうまく機能します。スライダーを完全に左にドラッグすると、actionScript 3.0 は再びムービーを開始します (私は推測します)。今度は中断せずに右にドラッグすると、スライダーは本来のように右に移動しません (すべて 1 回のドラッグで)。
最初に滑り始めてから滑り続けることができないのはなぜですか?
私のコード:
とても簡単です。ドラッグを開始すると、長方形が dragRestriction になります。ムービーが停止します。isDragging = true.
SearchBarSlider.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToDrag);
function fl_ClickToDrag(event:MouseEvent):void
{
var rect:Rectangle = new Rectangle(SearchBar.x + 3,
SearchBar.y,
SearchBar.width - 10,
0);
SearchBarSlider.startDrag(false, rect);
stop();
isDraging = true;
}
繰り返しますが、簡単です。ドラッグストップ。ムービーの再生が再開されます。isdragging = false;
stage.addEventListener(MouseEvent.MOUSE_UP, fl_ReleaseToDrop);
function fl_ReleaseToDrop(event:MouseEvent):void
{
SearchBarSlider.stopDrag();
play();
isDraging = false;
}
スライダーの x 位置をドラッグするときにマウスが移動すると、適切な量のフレームに変換されます。3 つの部分の間に他の長さが適用されます。
stage.addEventListener(MouseEvent.MOUSE_MOVE, fl_Drag);
function fl_Drag(event:MouseEvent):void
{
if(isDraging == true) {
if(SearchBarSlider.x - (SearchBar.x + 3) < 20){
gotoAndStop(Math.round(((SearchBarSlider.x - (SearchBar.x + 3)) / 20) * 320));
} else if(SearchBarSlider.x - SearchBar.x + 3 >= 20 && SearchBarSlider.x - SearchBar.x + 3 < 40){
gotoAndStop(Math.round(((SearchBarSlider.x - (SearchBar.x + 3) - 20) / 20) * 365) + 365);
} else {
gotoAndStop(Math.round(((SearchBarSlider.x - (SearchBar.x + 3) - 40) / 20) * 465) + 685);
}
}
}
このイベントは、ドラッグしていないときにすべてのフレームで発生します。ただし、スライダーの x 位置をフレームに変換する代わりに、フレームをスライダーの x 位置に変換します。
stage.addEventListener(Event.ENTER_FRAME, fl_frameEvent);
function fl_frameEvent(e:Event):void
{
if(isDraging == false) {
if(currentFrame < 365){
SearchBarSlider.x = SearchBar.x + 3 + Math.round((currentFrame / 365) * 20);
} else if(currentFrame >= 365 && currentFrame < 685){
SearchBarSlider.x = SearchBar.x + 23 + Math.round(((currentFrame - 365) / 320) * 20);
} else {
SearchBarSlider.x = SearchBar.x + 43 + Math.round(((currentFrame - 685) / 465) * 20);
}
}
}