Просмотр полной версии : Динамический include
Ruslan_xDD
30.12.2013, 14:37
Доброго времени суток, уважаемые пользователи форума!
Собственно, разрабатываю сейчас движок для 2D файтингов, что-то типо M.U.G.E.N.
Но столкнулся с такой проблемой:
(пример)
var CharConfig:Object = {
moves: 'data/moves.as',
basic: 'data/basic.as'
};
include CharConfig.moves; //Error
Возможно ли инклюдить сценарии по значению переменной? Если нет, то есть ли альтернативные способы?
Буду признателен за помощь, спасибо.
Возможно вам помогут константы компилятора. Но я бы советовал Вам отказаться от подхода с инклюдами.
Fogflasher
30.12.2013, 15:58
что-то типо M.U.G.E.N.
Хм, прикольно. Один раз пробовал кодить для Mugen'а.
Сделал дополнительную комбо-атаку для July из Street Fighter, лол.
Вобщем, интересно было бы взглянуть на любой пример, на базе вашего движка.
Ruslan_xDD
30.12.2013, 16:08
Возможно вам помогут константы компилятора.
А можно пожалуйста с этим подробнее? И желательно, с примерами. Спасибо. :)
Вобщем, интересно было бы взглянуть на любой пример, на базе вашего движка.
Да пока что всё очень сыро, как только - так сразу. До этого уже как-то пробовал собирать, сделал ходьбу, динамические арены, камеру, теперь вот решил по новой сделать, чтобы все файлы персонажей были по отдельности, но к сожалению возникла проблема с динамическим подключением as.
Dukobpa3
30.12.2013, 17:06
А зачем аж инклюдами?
Вы хотите что-ли сделать один класс файтера для всех, а потом в него "инклюдить" уникальный функционал каждого бойца?
Для этого есть более человеческие ооп подходы.
Ruslan_xDD
30.12.2013, 18:12
Dukobpa3, просто я пытаюсь приблизить функционал ближе в MUGEN'у (движку для создания файтингов), там для каждого персонажа подключаются несколько файлов с сценариями. Например так (как задумал я для AS3):
Config = {
name: 'scorpion',
id: 'scorpion',
states: ['common.as', 'moves.as', 'finishes.as', 'basic_moves.as', 'commands.as']
}
То есть, в states пишется сколько угодно директорий к сценариям для данного персонажа.
Сами as сценарии будут не классами, а обычными ф-циями.
Например, из common.as:
function Stance() { //Стандартная стройка персонажа
type = 'S'; //Игрок в положении стоя
control = true; //Игрок доступен для управления
Player.animation('stance', 'loop');
}
function Walk() { //Ходьба
...
}
function Run() { //Бег
...
}
Из command.as:
stage.addEventListener('enterFrame', function() {
if(command == 'F, F, x' && control && type == 'S') { //Если игрок набрал комманду Вперёд, Вперёд, Х и при этом игрок доступен для управления, и ещё при этом игрок находится в положении стоя, то выполнится ф-ция Fireball;
Fireball();
}
});
Это всё выше примеры, примерно так будет реализовано. Надеюсь, сама суть ясна. :)
states: ['common.as', 'moves.as', 'finishes.as', 'basic_moves.as', 'commands.as']
А вот это нужно как-то всё подгрузить при загрузке персонажа в игру. :)
Dukobpa3
30.12.2013, 18:28
так будет реализовано.
Поспешу вас разочаровать, так реализовано НЕ БУДЕТ :)
Не на флеше как минимум.
getDefinitionByName() в помощь.
Будете грузить какие-то стандартные наборы быблиотек.
В конфигах указывать имена классов (а не файлов).
Доставать из аппДомена эти классы и по сути результат тот -же, зато глаз будет меньше резать.
А за вот это я бы ручки-то поотрывал.
stage.addEventListener('enterFrame', function() {
if(command == 'F, F, x' && control && type == 'S') { //Если игрок набрал комманду Вперёд, Вперёд, Х и при этом игрок доступен для управления, и ещё при этом игрок находится в положении стоя, то выполнится ф-ция Fireball;
Fireball();
}
});
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.