![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2011
Сообщений: 18
|
Люди добрые!
Для упрощения читабельности кода, хочу разбить проект на разные файлы по функционалу. Как это правильно сделать, и как эти файлы подключать потом. Допустим создаю я файл BackMusic.as package BackMusic{ import flash.events.Event; import flash.media.Sound; import flash.net.URLRequest; private var Channel:SoundChannel; private var MusicIsOn:Boolean = true; private var Music:Sound=new Sound(); private var MTime:Number; public function InitMusic(FName:String){ Music.load(new URLRequest(FName)); PlayMusic(); } public function StopMusic(evt:Event):void { if (MusicIsOn) { MTime=Channel.position; Channel.stop(); MusicIsOn = false; } else { PlayMusic(); MusicIsOn = true; } } private function PlayMusic():void { Channel = Music.play(MTime); Channel.addEventListener(Event.SOUND_COMPLETE, Repeat); } private function Repeat(evt:Event):void { if (Channel != null) { Channel.removeEventListener(Event.SOUND_COMPLETE, Repeat); PlayMusic(); } } } import files.BackMusic; InitMusic("bgmusic.mp3"); btnMusic.addEventListener(MouseEvent.CLICK, StopMusic); Как правильно это организовать |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Похоже что у вас просто не правильное представление о работе АС3, больше похожее на PHP или что-то типа того.
В АС3 таким образом файлы не подключаются. Нужно создавать экземпляр класса, в данном случае класса InitMusic. Проще говоря сделать в проект примерно так: import files.BackMusic; var initMusic:InitMusic = new InitMusic("bgmusic.mp3"); btnMusic.addEventListener(MouseEvent.CLICK, StopMusic); package BackMusic{ import flash.display.Sprite; import flash.events.Event; import flash.media.Sound; import flash.net.URLRequest; public class InitMusic extends Sprite { private var Channel:SoundChannel; private var MusicIsOn:Boolean = true; private var Music:Sound=new Sound(); private var MTime:Number; public function InitMusic(FName:String){ Music.load(new URLRequest(FName)); PlayMusic(); } public function StopMusic(evt:Event):void { if (MusicIsOn) { MTime=Channel.position; Channel.stop(); MusicIsOn = false; } else { PlayMusic(); MusicIsOn = true; } } private function PlayMusic():void { Channel = Music.play(MTime); Channel.addEventListener(Event.SOUND_COMPLETE, Repeat); } private function Repeat(evt:Event):void { if (Channel != null) { Channel.removeEventListener(Event.SOUND_COMPLETE, Repeat); PlayMusic(); } } } } Последний раз редактировалось goodguy; 17.11.2011 в 20:50. |
|
|||||
|
Регистрация: Oct 2011
Сообщений: 18
|
А это зачем? Расширяем класс Sprite?
Но даже создав вашу реализацию BackMusic.as Выдает ошибку. Такое впечатление что просто сам класс создан неправильно. 1172: Definition files:BackMusic could not be found. |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
Сам класс создан правильно, не правильный пакет. Думаю нужно дописать в package это: если конечно класс лежит в папке files, которая находится в той же папке где валяется fla файл Последний раз редактировалось goodguy; 17.11.2011 в 21:13. |
|
|||||
|
Регистрация: Oct 2011
Сообщений: 18
|
-De-
Помогло! Файл нашелся! Но всё равно не работает. Возникает куча других ошибок. 1046: Type was not found or was not a compile-time constant: InitMusic. 1180: Call to a possibly undefined method InitMusic. 1120: Access of undefined property StopMusic. Не сочтите за наглость! Можете выложить рабочий пример. Был бы очень признателен Последний раз редактировалось Lunatic; 17.11.2011 в 21:32. |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
на чтобы исправить последнюю ошибку, меняем на |
|
|||||
|
Регистрация: Oct 2011
Сообщений: 18
|
Спасибо! Всё заработало! Немного ошибок еще наделал случайно добавив пару кадров и вызов осуществлялся по кругу.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 07:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|