PDA

Просмотр полной версии : Динамический 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

Возможно ли инклюдить сценарии по значению переменной? Если нет, то есть ли альтернативные способы?
Буду признателен за помощь, спасибо.

СлаваRa
30.12.2013, 14:49
Возможно вам помогут константы компилятора. Но я бы советовал Вам отказаться от подхода с инклюдами.

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();
}
});