Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.11.2011, 20:34
Lunatic вне форума Посмотреть профиль Отправить личное сообщение для Lunatic Найти все сообщения от Lunatic
  № 1  
Ответить с цитированием
Lunatic

Регистрация: Oct 2011
Сообщений: 18
По умолчанию Разбить проект на модули

Люди добрые!
Для упрощения читабельности кода, хочу разбить проект на разные файлы по функционалу.
Как это правильно сделать, и как эти файлы подключать потом.
Допустим создаю я файл BackMusic.as
Код AS3:
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();
		}
	}
}
Пытаюсь подключить в проекте
Код AS3:
 import files.BackMusic;
InitMusic("bgmusic.mp3");
btnMusic.addEventListener(MouseEvent.CLICK, StopMusic);
Пишет что файл не найден.

Как правильно это организовать

Старый 17.11.2011, 20:47
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 2  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Похоже что у вас просто не правильное представление о работе АС3, больше похожее на PHP или что-то типа того.
В АС3 таким образом файлы не подключаются. Нужно создавать экземпляр класса, в данном случае класса InitMusic.
Проще говоря сделать в проект примерно так:
Код AS3:
import files.BackMusic;
var initMusic:InitMusic = new InitMusic("bgmusic.mp3");
btnMusic.addEventListener(MouseEvent.CLICK, StopMusic);
и сам класс нужно объявить правильно:
Код AS3:
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.
Старый 17.11.2011, 21:00
Lunatic вне форума Посмотреть профиль Отправить личное сообщение для Lunatic Найти все сообщения от Lunatic
  № 3  
Ответить с цитированием
Lunatic

Регистрация: Oct 2011
Сообщений: 18
А это зачем? Расширяем класс Sprite?
Код AS3:
extends Sprite
Но даже создав вашу реализацию BackMusic.as
Выдает ошибку. Такое впечатление что просто сам класс создан неправильно.
Код AS3:
import files.BackMusic;
1172: Definition files:BackMusic could not be found.

Старый 17.11.2011, 21:11
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 4  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
А это зачем? Расширяем класс Sprite?
Можно и не расширять, сути дела это не поманеят.

Сам класс создан правильно, не правильный пакет.
Думаю нужно дописать в package это:
Код AS3:
package files
если конечно класс лежит в папке files, которая находится в той же папке где валяется fla файл


Последний раз редактировалось goodguy; 17.11.2011 в 21:13.
Старый 17.11.2011, 21:12
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 5  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Может просто
Код AS3:
import BackMusic;
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 17.11.2011, 21:29
Lunatic вне форума Посмотреть профиль Отправить личное сообщение для Lunatic Найти все сообщения от Lunatic
  № 6  
Ответить с цитированием
Lunatic

Регистрация: 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.
Старый 17.11.2011, 21:44
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 7  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
1046: Type was not found or was not a compile-time constant: InitMusic.
1180: Call to a possibly undefined method InitMusic.
чтобы исправить, меняем:
Код AS3:
 import files.BackMusic;
на
Код AS3:
 import BackMusic;
чтобы исправить последнюю ошибку, меняем
Код AS3:
btnMusic.addEventListener(MouseEvent.CLICK, StopMusic);
на
Код AS3:
btnMusic.addEventListener(MouseEvent.CLICK, initMusic.StopMusic);

Старый 17.11.2011, 22:21
Lunatic вне форума Посмотреть профиль Отправить личное сообщение для Lunatic Найти все сообщения от Lunatic
  № 8  
Ответить с цитированием
Lunatic

Регистрация: Oct 2011
Сообщений: 18
Спасибо! Всё заработало! Немного ошибок еще наделал случайно добавив пару кадров и вызов осуществлялся по кругу.

Создать новую тему Ответ Часовой пояс GMT +4, время: 07:44.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 07:44.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.