Я работаю над видеопроигрывателем для своего класса онлайн-скриптов, и у меня есть мои ролики, моя игра и моя кнопка Mute, работающая с правильными состояниями зависания и всего , Они расположены правильно и готовы к работе. Теперь я должен создать свой ползунок времени и мой ползунок тома, и именно там возникает трудность. Я создал файл ActionScript 3 под названием VolumeBar, и я понятия не имею, почему он не работает. В моей голове это должно работать, но я думаю, что чего-то не хватает.Смутно, почему Volume Control не работает в 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();
}
}
VolumeBar
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();
}
}
Все, что я хотел бы знать, прямо сейчас КАК получить его на экране и в принципе перемещать. Как только я это пойду, я знаю, что смогу самостоятельно отдохнуть. Спасибо Stack Overflowers!
ли ползунок перемещается при перетаскивании? Я думаю, что эти вычисления ошибочны: var trackX: int = sliderVolume.x; var boundWidth = trackWidth - knobWidth; var boundsRect: Rectangle = new Rectangle (trackX, 0, boundWidth, 0); – Eran