Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Динамический include (http://www.flasher.ru/forum/showthread.php?t=205916)

Ruslan_xDD 30.12.2013 14:37

Динамический include
 
Доброго времени суток, уважаемые пользователи форума!

Собственно, разрабатываю сейчас движок для 2D файтингов, что-то типо M.U.G.E.N.

Но столкнулся с такой проблемой:

(пример)
Код AS3:

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):
Код AS3:

Config = {
  name: 'scorpion',
  id: 'scorpion',
  states: ['common.as', 'moves.as', 'finishes.as', 'basic_moves.as', 'commands.as']
}

То есть, в states пишется сколько угодно директорий к сценариям для данного персонажа.
Сами as сценарии будут не классами, а обычными ф-циями.


Например, из common.as:

Код AS3:

function Stance() { //Стандартная стройка персонажа
  type = 'S'; //Игрок в положении стоя
  control = true; //Игрок доступен для управления
 
  Player.animation('stance', 'loop');
}
 
function Walk() { //Ходьба
  ...
}
 
function Run() { //Бег
  ...
}

Из command.as:

Код AS3:

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() в помощь.
Будете грузить какие-то стандартные наборы быблиотек.
В конфигах указывать имена классов (а не файлов).
Доставать из аппДомена эти классы и по сути результат тот -же, зато глаз будет меньше резать.


А за вот это я бы ручки-то поотрывал.
Цитата:

Код AS3:

stage.addEventListener('enterFrame', function() {
 
  if(command == 'F, F, x' && control && type == 'S') { //Если игрок набрал комманду Вперёд, Вперёд, Х и при этом игрок доступен для управления, и ещё при этом игрок находится в положении стоя, то выполнится ф-ция Fireball;
    Fireball();
  }
});




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

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