2014-04-02 3 views
1

저는 Action Scripting 및 Flash에 매우 익숙합니다. 탐색 바를 구현해야합니다. 내 JSP 페이지에 videoPlayer를 실행하는 SWF를 임베드했습니다. 또한 페이지에서 재생 및 정지 버튼을 구현했습니다. 나는 탐색 바를 구현할 필요가있다. 검색 바, 볼륨 컨트롤 및 타이머가 표시 될 다른 웹 페이지에 내 swf를 포함시켜야합니다. 탐색 막대에 대한 타이머를 swf에 전달하여 그에 따라 이동해야합니다. 그리고 내 필요에 따라 플레이어의 피부를 조정하십시오. 어떻게해야합니까? 누군가 제발 나를 도와 줄 수 있니? 나는 Flash Professional CC와 FlashDevelop를 가지고있다. 고마워.actionscript 3의 플래시 찾기 모음

업데이트 :

나는 다음을 시도했지만 나는 그것을 구현하는 방법을 모르겠어요. 누구든지이 일을 수행하는 방법을 보여줄 수 있습니까? 이것을 위해 Jw-player를 사용할 수 있습니까?

package 
{ 
import flash.display.Sprite; 
import flash.events.Event; 
import flash.media.SoundChannel; 
import flash.media.Sound; 
import flash.utils.Timer; 
import flash.events.TimerEvent; 
import flash.events.ProgressEvent; 
import flash.events.IOErrorEvent; 
import flash.net.URLRequest;  
import flash.external.ExternalInterface; 
import flash.system.Security; 
/** 
* ... 
* @author lisa 
*/ 
public class Main extends Sprite 
{ 
    private var _channel:SoundChannel; 
    private var sound:Sound; 
    private var duration:Number; 
    private var playerInstance:String; 
    private var pausePoint:Number = 0; 
    private var playing:Boolean = false; 
    private var timer:Timer; 

    public function Main():void 
    { 
     this.timer = new Timer(250, 0); 
     Security.allowDomain("*"); 
     this.playerInstance = root.loaderInfo.parameters.playerInstance + "."; 
     ExternalInterface.addCallback("init", this.init); 
     ExternalInterface.addCallback("load", this.load); 
     ExternalInterface.addCallback("playPause", this.playPause); 
     ExternalInterface.addCallback("pplay", this.play); 
     ExternalInterface.addCallback("ppause", this.pause); 
     ExternalInterface.addCallback("skipTo", this.skipTo); 
     ExternalInterface.call(this.playerInstance + "loadStarted"); 
     return; 
     //if (stage) init(); 
     //else addEventListener(Event.ADDED_TO_STAGE, init); 
    } 

    private function init(param1:String):void 
    { 
     this.load(param1); 
     return; 
     //removeEventListener(Event.ADDED_TO_STAGE, init); 
     // entry point 
    } 

    private function get channel() : SoundChannel 
    { 
     return this._channel; 
    }// end function 

    private function set channel(param1:SoundChannel) : void 
    { 
     this._channel = param1; 
     this._channel.addEventListener(Event.SOUND_COMPLETE, this.soundEnded); 
     return; 
    }// end function 

    private function updatePlayhead(event:TimerEvent = null) : void 
    { 
     var _loc_2:* = event ? (this.channel.position) : (this.pausePoint); 
     var _loc_3:* = _loc_2/this.duration; 
     if (_loc_3 > 1) 
     { 
      _loc_3 = 1; 
     } 
     if (_loc_3 > 0) 
     { 
      ExternalInterface.call(this.playerInstance + "updatePlayhead", _loc_3); 
     } 
     return; 
    }// end function 

    private function loadProgress(event:ProgressEvent) : void 
    { 
     this.duration = event.bytesTotal/(event.bytesLoaded/this.sound.length); 
     var _loc_2:* = event.bytesLoaded/event.bytesTotal; 
     if (_loc_2 > 1) 
     { 
      _loc_2 = 1; 
     } 
     if (_loc_2 > 0) 
     { 
      ExternalInterface.call(this.playerInstance + "loadProgress", _loc_2, this.duration/1000); 
     } 
     return; 
    }// end function 

    private function load(param1:String) : void 
    { 
     if (this.channel) 
     { 
      this.channel.stop(); 
     } 
     if (this.sound) 
     { 
      this.sound.removeEventListener(ProgressEvent.PROGRESS, this.loadProgress); 
     } 
     this.channel = new SoundChannel(); 
     this.sound = new Sound(new URLRequest(param1)); 
     this.pausePoint = 0; 
     this.sound.addEventListener(IOErrorEvent.IO_ERROR, this.loadError); 
     this.sound.addEventListener(ProgressEvent.PROGRESS, this.loadProgress); 
     this.timer.addEventListener(TimerEvent.TIMER, this.updatePlayhead); 
     this.timer.start(); 
     return; 
    }// end function 

    private function loadError(event:IOErrorEvent) : void 
    { 
     ExternalInterface.call(this.playerInstance + "loadError"); 
     return; 
    }// end function 

    private function play() : void 
    { 
     this.channel = this.sound.play(this.pausePoint); 
     this.playing = true; 
     this.timer.start(); 
     return; 
    }// end function 

    private function pause() : void 
    { 
     this.pausePoint = this.channel.position; 
     this.channel.stop(); 
     this.playing = false; 
     this.timer.stop(); 
     return; 
    }// end function 

    private function playPause() : void 
    { 
     if (this.playing) 
     { 
      this.pause(); 
     } 
     else 
     { 
      this.play(); 
     } 
     return; 
    }// end function 

    private function skipTo(param1:Number) : void 
    { 
     this.channel.stop(); 
     this.pausePoint = this.duration * param1; 
     if (this.playing) 
     { 
      this.channel = this.sound.play(this.pausePoint); 
     } 
     else 
     { 
      this.updatePlayhead(); 
     } 
     return; 
    }// end function 

    private function soundEnded(event:Event) : void 
    { 
     ExternalInterface.call(this.playerInstance + "trackEnded"); 
     return; 
    }// end function 

} 
ActionScript를 아주 처음 사용하는 경우

}

+2

무엇을 시도 했습니까? 코드는 어디에 있습니까? 이 사이트는 프로그래밍 관련 질문을 돕기위한 것이지, 당신을 위해 일하거나 당신을 가르치는 것을 돕기위한 것이 아닙니다. – DodgerThud

+0

내 질문에 편집 됨. – user3378735

답변

2

, 당신을 위해 어쩌면이 tutorial will be helpful.

나는 당신을 위해 작은 예제를 만들었습니다 : SimpleSeekBar. 이 구성 요소를 완료 할 숙제가 될 것이다 : 등, AS3Signals으로 예를 들어, 사용자 상호 작용 후 변경된 진행의 또 다른 구성 요소를 통보

//Usage example 
var seekBar:SimpleSeekBar = new SimpleSeekBar(); 
addChild(seekBar); 
seekBar.initiate(220, 8); 
//progress = currentTime/totalDuration; 
seekBar.changeProgress(0.5); //Half 

//pretty position 
seekBar.x = seekBar.y = 20; 

SimpleSeekBar 정의 : 결과

import flash.display.Shape; 
import flash.display.Sprite; 
import flash.events.MouseEvent; 
import flash.geom.Rectangle; 

public class SimpleSeekBar extends Sprite { 
    private var _bar:Sprite; 
    private var _seekIndicator:Shape; 
    private var _pip:Sprite; 
    private var _seekZone:int; 
    private var _dragZone:Rectangle; 

    public function initiate(width:int, height:int):void { 
     _bar = new Sprite(); 
     _seekIndicator = new Shape(); 
     _pip = new Sprite(); 
     _seekZone = width - height; 
     _dragZone = new Rectangle(0, height * 0.5, _seekZone, 0); 

     _bar.addEventListener(MouseEvent.CLICK, onClickBar); 
     _pip.addEventListener(MouseEvent.MOUSE_DOWN, onDownPip); 

     addChild(_bar); 
     addChild(_seekIndicator); 
     addChild(_pip); 

     _bar.graphics.beginFill(0x777777); 
     _bar.graphics.drawRect(0, 0, width, height); 

     _seekIndicator.graphics.beginFill(0x990000); 
     _seekIndicator.graphics.drawRect(0, 0, 100, height); 

     _pip.graphics.beginFill(0xF0F0F0); 
     _pip.graphics.drawCircle(height * 0.5, 0, height * 0.5); 
     _pip.graphics.beginFill(0x565656); 
     _pip.graphics.drawCircle(height * 0.5, 0, height * 0.25); 
     _pip.y = height * 0.5; 

     updateSeek(); 
    } 

    public function changeProgress(progress:Number):void { 
     _pip.x = _seekZone * progress; 
     updateSeek(); 
    } 

    private function getProgressFromPosition(localX:Number):Number { 
     var progress: Number = localX/_seekZone; 
     if(progress > 1){ 
      progress = 1; 
     } 
     return progress; 
    } 

    private function onClickBar(e:MouseEvent):void { 
     //Move progress to the new position 
     changeProgress(getProgressFromPosition(e.localX)); 
    } 

    private function onDownPip(e:MouseEvent):void { 
     //Start drag, also it's a good place to set flag, that we are dragging, and 
     //changeProgress don't affect our pip 
     stage.addEventListener(MouseEvent.MOUSE_UP, onUp); 
     stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove); 
     _pip.startDrag(false, _dragZone); 
    } 

    private function onMove(e:MouseEvent):void { 
     updateSeek(); 
    } 

    private function onUp(e:MouseEvent):void { 
     stage.removeEventListener(MouseEvent.MOUSE_UP, onUp); 
     stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove); 
     _pip.stopDrag(); 
    } 

    private function updateSeek():void { 
     _seekIndicator.width = _pip.x; 
    } 
} 

이 될 것입니다 다음과 같이 입력하십시오 :

SeekBar Example

+0

Nicolas에게 감사드립니다. 그것은 매력처럼 작동했습니다. – user3378735