2011-12-02 4 views
0

ムービークリップのタイムラインをスクラブ/コントロールするスライダー(およびボタン)のコードはありますが、これをアクションスクリプト3に変換する方法は失われています。 感謝。代わりに、誰かがこの機能のas3の例を知っていますか?ここアクションスクリプトタイムラインスクラバー/ AS3に変換

はコードです:

controller = this; 

startR = timeline._x; 
endR = startR + timeline._width; 
Range = endR-startR; 

playSpeed = 0; 

slider.onPress = function(){ 
var offset = this._x - this._parent._xmouse; 
this.onMouseMove = function(){ 
    this._x = Math.min(Math.max(startR, this._parent._xmouse + offset), endR); 
    var percent = (this._x-startR)/Range; 
    target.gotoAndStop(Math.floor(percent*target._totalframes)+1) 
    updateAfterEvent(); 
} 
this.onMouseMove(); 
} 
slider.onRelease = slider.onReleaseOutside = function(){ 
delete this.onMouseMove; 
if (playSpeed == 1) target.play() 
} 
this.onEnterFrame = function(){ 
if (!slider.onMouseMove){ 
    if (playSpeed != 1) target.gotoAndPLay(Math.round(target._currentframe+playSpeed)); 
    // playSpeed of 1 is handled with play() so that synced audio can play 
    if (target._currentframe == target._totalframes) playSpeed = 0; 
    var percent = (target._currentframe-1)/(target._totalframes-1); 
    slider._x = startR + Range*percent; 
} 
} 

// Buttons 
start_btn.onRelease = function(){ 
playSpeed = 0; 
target.gotoAndStop(1); 
} 
rw_btn.onPress = function(){ 
this.orig = playSpeed; 
playSpeed = -2; 
} 
rw_btn.onRelease = rw_btn.onReleaseOutside = function(){ 
playSpeed = this.orig; 
if (playSpeed == 1) target.play(); 
} 
stop_btn.onRelease = function(){ 
playSpeed = -1; 
} 
play_btn.onRelease = function(){ 
playSpeed = 1; 
target.play(); 
} 
ff_btn.onPress = function(){ 
this.orig = playSpeed; 
playSpeed = 2; 
} 
ff_btn.onRelease = rw_btn.onReleaseOutside = function(){ 
playSpeed = this.orig; 
if (playSpeed == 1) target.play(); 
} 
end_btn.onRelease = function(){ 
playSpeed = 0; 
target.gotoAndStop(target._totalframes); 
} 

これが彼の空き時間にそれを行うために誰かのために複雑に道であれば、 は多分誰かはもちろん支払った、AS3に私のために、この機能を作成するに興味がありますか?相続人は、事前に

おかげで、 記号論的

+0

あなたがゼロから1を作るのではなく – Ronnie

答えて

0

それは混乱のaswellのようなものだが、私はあなたが文句を言わないとにかくそれのすべてを必要とする推測スライダーを使用する例。

MovieClipにはインスタンス名クリップがあります。

スライダーは(それがコンポーネントのメニューにあります)インスタンス名のスライダーを持っており、 プロパティで100

6つのボタンの最大値は、インスタンス名playBtn、stopBtn、reverseBtn、fasterBtn、slowerBtnを持っている 彼らは名前が示唆していることを実行します^^。

フレームスクリプトとして使用しますこれを:

import fl.events.*; 
import fl.controls.*; 

clip.stop(); 

//slider 
var slider:Slider; 
slider.liveDragging=true; 
slider.addEventListener(SliderEvent.CHANGE, sliderListener); 
slider.addEventListener(SliderEvent.THUMB_PRESS, stopListener); 
slider.addEventListener(SliderEvent.THUMB_RELEASE, playListener); 

//update thumb 
clip.addEventListener(Event.ENTER_FRAME, enterFrameListener); 

//buttons 
playBtn.addEventListener(MouseEvent.CLICK,playListener); 
stopBtn.addEventListener(MouseEvent.CLICK,stopListener); 
reverseBtn.addEventListener(MouseEvent.CLICK,reverseListener); 
fasterBtn.addEventListener(MouseEvent.CLICK,faster); 
slowerBtn.addEventListener(MouseEvent.CLICK,slower); 

var speed:int=1; 
var lastSpeed:int=1; 

//when slider value changes 
function sliderListener(event:SliderEvent):void{ 
    var frame:Number = Math.round(clip.totalFrames*event.value/100); 
    clip.gotoAndStop(frame); 
} 

function playListener(event:Event){speed=lastSpeed} //playBtn or release Thumb 
function stopListener(event:Event){lastSpeed=speed;speed=0}//stopBtn or press Thumb 
function reverseListener(event:Event){speed*=-1}//reverseBtn 
function faster(event:Event){speed++}//fasterBtn 
function slower(event:Event){speed--}//slowerBtn 

function enterFrameListener(event:Event){ 
    if(speed!=0){ 
     if(clip.currentFrame+speed<1){ 
      clip.gotoAndStop(clip.totalFrames+speed+1); 
     }else if(clip.currentFrame+speed>clip.totalFrames){ 
      clip.gotoAndStop(0+speed); 
     }else{ 
      clip.gotoAndStop(clip.currentFrame+speed); 
     } 
    slider.value=Math.round(clip.currentFrame/clip.totalFrames*100); 
    } 
} 

私はちょうどあなたのAS2スクリプトが早送りを持って見たように。だからここffBtnのための追加のスクリプトのようになります。

ffBtn.addEventListener(MouseEvent.MOUSE_DOWN,ffStartListener); 
ffBtn.addEventListener(MouseEvent.MOUSE_UP,ffEndListener); 
ffBtn.addEventListener(MouseEvent.MOUSE_OUT,ffEndListener); 

var ff:Boolean=false; 

function ffStartListener(event:Event){ff=true;speed*=2}; 
function ffEndListener(event:Event){ 
    if(ff){ 
     speed/=2; 
     ff=false; 
    } 
} 

はここに.swfファイルを参照してください:http://swftly.com/slider

+0

はそんなにありがとうこの混乱を変換しようとしている方がいいでしょう、私はそれを使用することができます! –

0

var mySlider:Slider;// slider on timeline 

mySlider.liveDragging=true; 
mySlider.addEventListener(Event.CHANGE, handlerScrollEvent); 

function handlerSliderChange(event:ScrollEvent):void{ 
    var value:Number = (event.target as Slider).value; 

    // TODO convert value from 0-10 to number of frames based on percentage 
} 
関連する問題