увеличить громкость нажатием кнопки во флеш-плеере с помощью Actionscript - PullRequest
0 голосов
/ 13 октября 2011

Я делаю флеш-плательщик.Я уже закончил часть объема, и я также хочу добавить две функции.Во-первых, когда пользователь нажимает кнопку «Добавить», он увеличивает текущую громкость и меняет цвет отображения громкости.Другой - когда пользователь нажимает кнопку «минус», он уменьшает текущую громкость и меняет цвет дисплея громкости.

Как мне написать эти две функции?Меня пробовали за цикл, но я настолько новичок в программировании, что он полностью запутался ...

Мой текущий код ActionScript -

import flash.net.URLRequest;
import flash.media.Sound;
import flash.events.Event;
import flash.media.SoundChannel;
import flash.events.MouseEvent;
import flash.events.ProgressEvent;
import flash.media.SoundTransform;

var audiofile:URLRequest=new URLRequest("mvl_player_test.mp3");
var song:Sound=new Sound();
var songcontro:SoundChannel;
var resumetime:Number = 0;

song.addEventListener(Event.COMPLETE, songLoaded);
song.addEventListener(ProgressEvent.PROGRESS, trackLoad);
song.load(audiofile);

function songLoaded(evt:Event):void{//play songs
play_btn.addEventListener(MouseEvent.CLICK, clickedplay);
pause_btn.addEventListener(MouseEvent.CLICK, clickedpause);
volume_1.addEventListener(MouseEvent.CLICK, clickedVol_1);
volume_2.addEventListener(MouseEvent.CLICK, clickedVol_2);
volume_3.addEventListener(MouseEvent.CLICK, clickedVol_3);
volume_4.addEventListener(MouseEvent.CLICK, clickedVol_4);
volume_5.addEventListener(MouseEvent.CLICK, clickedVol_5);
volume_6.addEventListener(MouseEvent.CLICK, clickedVol_6);
volume_7.addEventListener(MouseEvent.CLICK, clickedVol_7);
}

function clickedplay(evt:MouseEvent):void{
play_btn.visible = false;
pause_btn.visible = true;
songcontro=song.play(resumetime);
addEventListener(Event.ENTER_FRAME, trackPlayback);
}

function clickedpause(evt:MouseEvent):void{
play_btn.visible = true;
pause_btn.visible = false;
resumetime = songcontro.position;
songcontro.stop();
removeEventListener(Event.ENTER_FRAME, trackPlayback);
}


function trackLoad(evt:ProgressEvent):void
{
load_progress.scaleX = evt.bytesLoaded / evt.bytesTotal;
}

function trackPlayback(evt:Event):void
{
var perPlayed:Number = songcontro.position / song.length;
played_progress.scaleX = perPlayed * (song_row.width) + song_row.scaleX;
}

Вот этот код относится к томуобласть отображения

function clickedVol_1(evt:MouseEvent):void
{
var volControl:SoundTransform = songcontro.soundTransform;
volControl.volume = 0.1;
songcontro.soundTransform = volControl;
volume_1.visible = false;
volume_1_2.visible = true;
volume_2_2.visible = false;
volume_3_2.visible = false;
volume_4_2.visible = false;
volume_5_2.visible = false;
volume_6_2.visible = false;
volume_7_2.visible = false;
}


function clickedVol_2(evt:MouseEvent):void
{
var volControl:SoundTransform = songcontro.soundTransform;
volControl.volume = 0.3;
songcontro.soundTransform = volControl;
volume_1.visible = false;
volume_2.visible = false;
volume_1_2.visible = true;
volume_2_2.visible = true;
volume_3_2.visible = false;
volume_4_2.visible = false;
volume_5_2.visible = false;
volume_6_2.visible = false;
volume_7_2.visible = false;
}

function clickedVol_3(evt:MouseEvent):void
{
var volControl:SoundTransform = songcontro.soundTransform;
volControl.volume = 0.4;

songcontro.soundTransform = volControl;
volume_1.visible = false;
volume_2.visible = false;
volume_3.visible = false;
volume_1_2.visible = true;
volume_2_2.visible = true;
volume_3_2.visible = true;
volume_4_2.visible = false;
volume_5_2.visible = false;
volume_6_2.visible = false;
volume_7_2.visible = false;
}

function clickedVol_4(evt:MouseEvent):void
{
var volControl:SoundTransform = songcontro.soundTransform;
volControl.volume = 0.5;
songcontro.soundTransform = volControl;
volume_1.visible = false;
volume_2.visible = false;
volume_3.visible = false;
volume_4.visible = false;
volume_1_2.visible = true;
volume_2_2.visible = true;
volume_3_2.visible = true;
volume_4_2.visible = true;
volume_5_2.visible = false;
volume_6_2.visible = false;
volume_7_2.visible = false;
}

function clickedVol_5(evt:MouseEvent):void
{
var volControl:SoundTransform = songcontro.soundTransform;
volControl.volume = 0.6;
songcontro.soundTransform = volControl;
volume_1.visible = false;
volume_2.visible = false;
volume_3.visible = false;
volume_4.visible = false;
volume_5.visible = false;
volume_1_2.visible = true;
volume_2_2.visible = true;
volume_3_2.visible = true;
volume_4_2.visible = true;
volume_5_2.visible = true;
volume_6_2.visible = false;
volume_7_2.visible = false;
}

function clickedVol_6(evt:MouseEvent):void
{
var volControl:SoundTransform = songcontro.soundTransform;
volControl.volume = 0.7;
songcontro.soundTransform = volControl;
volume_1.visible = false;
volume_2.visible = false;
volume_3.visible = false;
volume_4.visible = false;
volume_5.visible = false;
volume_6.visible = false;
volume_1_2.visible = true;
volume_2_2.visible = true;
volume_3_2.visible = true;
volume_4_2.visible = true;
volume_5_2.visible = true;
volume_6_2.visible = true;
volume_7_2.visible = false;
}

function clickedVol_7(evt:MouseEvent):void
{
var volControl:SoundTransform = songcontro.soundTransform;
volControl.volume = 1;
songcontro.soundTransform = volControl;
volume_1.visible = false;
volume_2.visible = false;
volume_3.visible = false;
volume_4.visible = false;
volume_5.visible = false;
volume_6.visible = false;
volume_7.visible = false;
volume_1_2.visible = true;
volume_2_2.visible = true;
volume_3_2.visible = true;
volume_4_2.visible = true;
volume_5_2.visible = true;
volume_6_2.visible = true;
volume_7_2.visible = true;
}

Спасибо за любой ответ

1 Ответ

1 голос
/ 13 октября 2011

Я думаю, что ваша проблема здесь в том, что у вас есть несколько кнопок громкости.У меня была бы одна полоса и две кнопки, плюс и минус.Когда вы нажимаете plusButton, вы запускаете функцию setVolume(volume), которая устанавливает новый объем в переменную, следя за тем, чтобы он был между 0 и 1. В конце функции вы обновляете гистограмму в зависимости от процента объема.Мне не нравится идея, что у вас так много кнопок.Сделайте одну кнопку с несколькими кадрами.В каждом кадре загорается новая кнопка громкости.Когда вы щелкаете весь клип, вы рассчитываете процент от mousePositionX и с * из 1004 *, чтобы получить новый объем.В функции updateBArGraphics вы просто сравниваете процент с количеством имеющихся у вас кадров и используете goToAndStop(volumeFrame).

Это написано у меня в голове, поэтому будут ошибки:

private function setVolume(newVolume : Number) : void
{
    if(newVolume > 1)
        newVolume = 1;

    if(newVolume < 0)
        newVolume = 0;

    volControl.volume = newVolume;
    songcontrol.soundTransform = volControl;

    updateVolumeBarGraphics();
}

private function onVolumeBarClickHandler(event : MouseEvent) : void
{
    // calculate where on the bar you clicked using MouseX and bar.width
    var calculatedPercentage : Number = 
    // set new volume
    setVolume(caculatedPercentage);
}

private function onVolumeMinusClickHandler(event : MouseEvent) : void
{
    setVolume(volControl.volume - 0.2);
}

private function onVolumeMinusClickHandler(event : MouseEvent) : void
{
    setVolume(volControl.volume + 0.2);
}

private function updateVolumeBarGraphics(newVolume : Number) : void
{
    var volumeFrame : int = Math.floor(newVolume * volumeBar.totalFrames) + 1;
    volumeBar.gotoAndStop(volumeFrame);
}

Что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...