私はオンライン スクリプト クラスのビデオ プレーヤーに取り組んでおり、ビデオの再生、再生、ミュート ボタンはすべて、正しいホバー状態とすべてで動作します。それらは正しく配置され、すぐに使用できます。次に、タイム スライダーとボリューム スライダーを作成する必要がありますが、ここで問題が発生します。VolumeBar という ActionScript 3 ファイルを作成しましたが、なぜ機能しないのかわかりません。私の頭ではうまくいくはずですが、何かが足りないと思います。
私のシンボルは、BTN_Slider、BTN_VolumeBar、および BTN_VolumeBarSlider です。私が行っていないフレーム内の「アクション」機能をすべて使用しているため、チュートリアルはどれも役に立ちません
主要
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.media.SoundTransform;
public class Main extends Sprite
{
static public var splash:SplashScreen;
private var theXMLFile:String = "VideoList.xml";
private var theVideoList:VideoList;
private var videoChoice:int = 0;
private var sndTransform:SoundTransform;
private var lastVolume:int = 1;
private var btn_Mute:BTN_Mute;
private var btn_Play:BTN_Play;
private var btn_Volume:VolumeBar;
static public var screenState:int = 0;
static public var nextState:int = 1;
public function Main()
{
theVideoList = new VideoList(theXMLFile);
btn_Mute = new BTN_Mute(581.3, 457.5);
btn_Play = new BTN_Play(42, 457.5);
btn_Volume = new VolumeBar(624.3, 457.5);
btn_Mute.addEventListener(MouseEvent.CLICK, clickedMute);
addEventListener(Event.ENTER_FRAME, update);
}
private function update(e:Event):void
{
switch(screenState)
{
case 0 :
break;
case 1 :
videoChoice = 0;
nextState = 2;
displayScreen();
trace("TEST");
addChild(btn_Volume);
addChild(btn_Mute);
addChild(btn_Play);
break;
case 2 :
videoChoice = 1;
nextState = 3;
changeScreen();
break;
}
screenState = 0;
}
public function displayScreen():void
{
splash = new SplashScreen(theVideoList.videoXML.theVideo[videoChoice].fileLoc.text());
addChild(splash);
}
public function changeScreen():void
{
var toShow:String = theVideoList.videoXML.theVideo[videoChoice].fileLoc.text();
splash.connectVideo(toShow);
}
private function muteVolume(vol:Number):void
{
sndTransform = new SoundTransform(vol);
splash.vidStream.soundTransform = sndTransform;
}
private function clickedMute(mb:MouseEvent):void
{
if(btn_Mute.isMuted == true)
{
muteVolume(lastVolume = 1);
btn_Mute.isMuted = false;
}
else if(btn_Mute.isMuted == false)
{
muteVolume(lastVolume = 0);
btn_Mute.isMuted = true;
}
}
static public function togglePlay():void
{
splash.vidStream.togglePause();
}
}
ボリュームバー
import flash.display.*;
import flash.events.*;
import flash.geom.Rectangle;
public class VolumeBar extends MovieClip
{
var sliderControl = new BTN_Slider();
var sliderVolume = new BTN_VolumeBar();
var knobWidth:int = sliderControl.width;
var trackWidth:int = sliderVolume.width;
var trackX:int = sliderVolume.x;
var boundWidth = trackWidth - knobWidth;
var boundsRect:Rectangle = new Rectangle(trackX, 0, boundWidth, 0);
public function VolumeBar(theX:int, theY:int)
{
this.x = theX;
this.y = theY;
sliderControl.addEventListener(MouseEvent.MOUSE_DOWN, startDragging);
sliderControl.addEventListener(MouseEvent.MOUSE_UP, stopDragging);
sliderControl.addEventListener(MouseEvent.MOUSE_OUT, stopDragging);
}
private function startDragging(mb:MouseEvent):void
{
sliderControl.startDrag(false, boundsRect);
}
private function stopDragging(mb:MouseEvent):void
{
sliderControl.stopDrag();
}
}
私が今知りたいのは、それを画面上に表示して基本的に動かす方法だけです。それができたら、残りは自分でできることがわかります。ありがとうスタックオーバーフロー!