AS3 newby here!
У меня на сцене есть мувиклип (thePlayer) с классом 'ThePlayer', а внутри этого мувиклипа находится SimpleButton с классом StopBtn.Оба класса сохраняются в папке с именем 'classes'.
Класс 'ThePlayer' загружает звук в звуковой канал и затем воспроизводит его из класса 'StopBtn'. Я добавляю прослушиватель событий для кнопки, которая ужена сцене внутри мувиклипа, а затем останавливая звуковой канал, установленный в «ThePlayer» из класса «StopBtn».
Для этого я передаю 'this' в функцию StopBtn (), чтобы иметь возможность управлять переменной Soundchannel, установленной в 'ThePlayer'
Кнопка, кажется, работает отлично, но я получаюэта ошибка в панели вывода:
ArgumentError: Error #1063: Argument count mismatch on classes::StopBtn(). Expected 1, got 0.
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at classes::ThePlayer()
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
Я считаю, что она думает, что функция StopBtn () в классе StopBtn не передает ничего, но когда я запускаю файл и нажимаю кнопку остановки насцена, это работает ...
Вот уже 4 дня я бьюсь головой об стену: (
Вот мой код для обоих классов:
ThePlayer.as
package classes
{
import flash.display.*;
import flash.media.*;
import flash.net.*;
import flash.events.*;
public class ThePlayer extends MovieClip
{
//Link vars to classes for accessing vars here in different classes
public var _stopBtn:StopBtn;
// Public and private Vars
public var mySound:Sound = new Sound();
public var mySoundChannel:SoundChannel = new SoundChannel();
public var trackPosition:Number = 0;
public var isPlaying:Boolean = false;
//Constructor function
public function ThePlayer()
{
_stopBtn = new StopBtn(this);
mySound.load(new URLRequest("mp3_files/song.mp3"));
mySoundChannel = mySound.play();
isPlaying = true;
}
}
}
StopBtn.as
package classes
{
import flash.display.*;
import flash.media.*;
import flash.net.*;
import flash.events.*;
public class StopBtn extends SimpleButton
{
var playerClass:ThePlayer;
public function StopBtn(recivedPlayerClass:ThePlayer)
{
playerClass = recivedPlayerClass;
playerClass.addEventListener(MouseEvent.CLICK, stopButtonFunction);
}
function stopButtonFunction(event:MouseEvent):void
{
playerClass.trackPosition = 0;
playerClass.mySoundChannel.stop();
playerClass.isPlaying = false;
//playerClass.pauseBtn.visible = false;
//playerClass.playPause.playBtn.visible = true;
}
}
}
Спасибо за вашу помощь!