подробнее
Форма для смены шаблонов сайта.
модуль template selector

Для этих целей разработан модуль для
megainformatic cms
и её модификаций (
express,
files,
admin, e-pro,
e-shop,
e-mailer,
seo, stat kit,
social и других).
Достоинство модуля в его универсальности - он применим и для любых других cms - joomla, wordpress, drupal, dle, shop script le, presta shop и иных систем
Установка модуля включает следующие шаги -
1) размещаем файлы модуля в папке для модулей.
2) в файле
template_selector_cookie.php прописываем доступный для выбора набор шаблонов
например так,
$templates = array('super', 'mega', 'classic', 'future', 'social');
Обратите внимание, что шаблоны с такими именами обязательно должны быть в папке шаблонов вашего сайта !!!
По-умолчанию это папка design.
3) в модуле before_output подключаем модуль template_selector_cookie.php
используя include_once
include_once "modules/template_selector_cookie.php";
4) В шаблонах (или одном из шаблонов) нужно вставить код, обеспечивающий вывод формы для выбора шаблона сайта.
например так,
include_once "modules/template_selector.php";
Модуль готов к работе !!!
Теперь при выборе нужного шаблона через форму и нажатии кнопки ШАБЛОН все страницы сайта будут отображаться с использованием
выбранного шаблона.
Пример использования данного модуля Вы можете видеть в шапке нашего сайта или по данной ссылке -
http://megainformatic.ru/webprojects/template_selector/
Приобрести комплект megainformatic cms express files + модуль template selector

Приобретая данный комплект Вы получаете:
-
работающий сайт под ключ, устанавливаемый в течение 10 минут, путём простого
копирования всех файлов дистрибутива на ваш хостинг;
- Плюс к этому
5 различных шаблонов сайта;
- и
подключенный модуль template selector;
В набор также включены следующие модули:
- before output - модули подкючаемые до вывода информации в браузер;
- date time - выводит текущую дату/время на сайте;
- default meta - вывод мета-тегов по-умолчанию;
- page - модуль вывода заголовков и страниц сайта;
- run line - модуль бегущей строки;
подробнееKKK Коллекционное издание: Веселый Буквоежка Комикс + Костя Коробкин Комикс + Нечто: Необъяснимое в плену желаний 2 начало
350 руб.
Включает:
6 комиксов -
Веселый Буквоежка,
Костя Коробкин Как я провел лето,
Костя Коробкин С новым годом,
Костя Коробкин Секретный проект,
Костя Коробкин в гостях у тёти Светы,
Костя Коробкин в гостях у тёти Светы часть 2 Живые машины.
Нечто: Необъяснимое 2 в плену желаний - начало.
220 авторских музыкальных mp3 треков.
Размер дистрибутива: 1,85 Гб
Системные требования: directx 9, Windows XP / Windows 7 / Windows 8 / Windows 10
около 2,04 Гб свободного места на жестком диске.
Полный список композиций:
sunrain_3.mp3
sunrain_3_mix_live_nature_2.mp3
sunrain_5.mp3
techno_1.mp3
terrible_beauty_v5.mp3
terrible_beauty_v7.mp3
think_about_stars.mp3
true.mp3
unbelievable_short.mp3
unbelievable_short_.mp3
undesire.mp3
unknowner_1.mp3
unknowner_2.mp3
unknowner_3.mp3
unknowner_4.mp3
unknowner_5.mp3
unknowner_6_cj_megainformatic.mp3
virtual_travel_3.mp3
virtual_travel_7.mp3
virtual_travel_8.mp3
virtual_travel_12.mp3
virtual_travel_14.mp3
walker_im_fly_3.mp3
when_i_dance.mp3
when_well.mp3
when_well_.mp3
when_well_2.mp3
when_well_5.mp3
when_well_6.mp3
when_well_7.mp3
when_well_8.mp3
when_well_9.mp3
wide_stairs.mp3
wide_stairs_2.mp3
wide_stairs_2_mix_agpl.mp3
win_tune_theme_4.mp3
win_tune_theme_5.mp3
win_tune_theme_6.mp3
winter_night.mp3
world_is_fight_3.mp3
world_is_fight_3_mixdown.mp3
you_mind_3.mp3
you_mind_3_v2.mp3
you_mind_song_v6.mp3
za_oknom_4.mp3
bg.mp3
endless4.mp3
grass2.mp3
open_new3.mp3
sowl_4.mp3
sowl_3.mp3
electro3.mp3
new_year2.mp3
road4.mp3
road5.mp3
road9.mp3
topic.mp3
all_changes_desire_for_beauty4.mp3
all_changes_desire_for_beauty5.mp3
creation7.mp3
hello.mp3
all_good_parallel_lines.mp3
allegory.mp3
allegory_4.mp3
antistress.mp3
as_monito_9.mp3
aspiring.mp3
autumn_bee.mp3
autumn_bee_2.mp3
autumn_bee_3.mp3
autumn_bee_4.mp3
balance.mp3
bird.mp3
bird_2.mp3
bird_3.mp3
bird_4.mp3
blue_far.mp3
blues_epic.mp3
blues_epic_3.mp3
bol.mp3
cake.mp3
cake_2.mp3
cake_3.mp3
cake_4.mp3
cake_5.mp3
call_rain_call_sun_shaman_2.mp3
calm.mp3
carambulina.mp3
casual_reality.mp3
clear_white_winter.mp3
computer_program.mp3
crystal_clarity.mp3
dance_of_divinity_6.mp3
desires_and_actions.mp3
desires_and_actions_2.mp3
dont_ask_about_anything.mp3
dreams_ocean.mp3
effect_optimisma_2.mp3
effect_optimisma_3.mp3
effect_optimisma_4.mp3
evidence.mp3
evidence_2.mp3
face_and_grace.mp3
face_and_grace_2.mp3
face_and_grace_3.mp3
faith.mp3
fast.mp3
fine_and_terry_longway_cont_theme_ver_from.mp3
fine_and_terry_longway_part2.mp3
fine_and_terry_longway_v3.mp3
first_step_3.mp3
first_step_song_probe_1.mp3
five_axel.mp3
fun_1_3.mp3
fun_2.mp3
fun_3.mp3
fun_sun.mp3
fun_sun_2.mp3
girl_in_white_by_cj_megainformatic.mp3
gold_autumn_girl.mp3
gold_autumn_girl_2.mp3
gold_autumn_girl_3.mp3
great_life_2.mp3
great_p3.mp3
great_p3_v2.mp3
great_p4.mp3
great_p5_redance.mp3
great_remake_by_flex.mp3
greatest_hits.mp3
greatest_hits_4.mp3
high_quality.mp3
high_quality_2.mp3
high_quality_3.mp3
high_quality_4.mp3
high_quality_4_lim.mp3
high_quality_5.mp3
in_a_fary_tale.mp3
incredibly_obvious_2.mp3
incredibly_obvious_3.mp3
incredibly_obvious_5.mp3
intro_old_village_chrome.mp3
kanzas_city.mp3
kanzas_city_2.mp3
kanzas_city_3_extended.mp3
knight_errant.mp3
knight_errant_2.mp3
knight_errant_3.mp3
knight_errant_4.mp3
knight_errant_5.mp3
knight_errant_6.mp3
kvadro.mp3
laskovoe_leto.mp3
laskovoe_leto_2.mp3
lifting.mp3
light_wave.mp3
live_nature.mp3
live_nature_2.mp3
lovely_place.mp3
moroznoe_utro_4_9.mp3
moved_2.mp3
nat_double.mp3
nat_double_3.mp3
nat_double_4.mp3
nat_double_5.mp3
nat_double_6.mp3
native_reality.mp3
native_reality_v2_cut.mp3
neo_sphere.mp3
new_page.mp3
now_2.mp3
now_3.mp3
nwnnw.mp3
oh_no_balet!.mp3
oh_no_balet!_5.mp3
old_village_chrome_repattern.mp3
open_new3_1.mp3
other_alternative.mp3
other_alternative_2.mp3
other_alternative_3.mp3
outside_dream.mp3
outside_dream_2.mp3
outside_dream_4.mp3
outside_dream_5.mp3
passionate.mp3
pink_far.mp3
plan_2.mp3
plan_fly_snow.mp3
plumber.mp3
poisonous_grove.mp3
polka_tech_v2.mp3
random_pause.mp3
random_pause_2.mp3
receipte_da.mp3
redundancy.mp3
redundancy_2.mp3
redundancy_3.mp3
remote_love.mp3
run_3.mp3
sad_autumn.mp3
sad_autumn_2.mp3
sea_sun_sand_2_mixdown.mp3
sea_sun_sand_3.mp3
sea_sun_sand_4.mp3
search5.mp3
search7.mp3
simple_alternative.mp3
soneo.mp3
soneo_2.mp3
soneo_3.mp3
sonic_weapon.mp3
spring_day.mp3
spring_sun.mp3
spring_theme_1.mp3
spring_theme_1_2.mp3
spring_theme_1_v2.mp3
standup.mp3
stem.mp3
stem_2.mp3
step_left_step_right_4.mp3
step_left_step_right_5.mp3
подробнееШаг 4 в освоении Flash-технологий - как анимировать персонажа и управлять им
[к содержанию]
Хочу поделиться своими изысками и экспериментами, а также опытом в области создания Flash-игр.
В данном обширном уроке я попытался охватить следующую тему:
Как создать простейшую игру - анимированный персонаж ходит по экрану по нажатию клавиш стрелок ВЛЕВО/ВПРАВО
Вопросы рассматриваемые в ходе урока:
1) Как создать приложение в среде FlashDevelop ?
2) Как подготовить анимацию персонажа во Flash CS5 и экспортировать в SWC библиотеку
3) Как использовать полученную в SWC библиотеке анимацию в AS3-приложении
4) Как управлять анимированным персонажем от клавиатуры и мыши
5) Фокус ввода для Flash-приложения в браузере
В результате выполнения действий описанных по ходу данного урока у Вас может получиться нечто нижеследующее -
Для того, чтобы управлять зомби кликните по нему мышкой, а затем используйте клавишу стрелка ВПРАВО.
1)
Как создать приложение в среде FlashDevelop ?
Ну что ж, приступим.
1) Запускаем IDE FlashDevelop;
2) Закрываем текущий проект (если он был открыт) File > Close All, создаем новый проект AS3 - Project > New Project > AS3;
вставляем такой код в файл Main.as
package walked_zomby
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private var _sprite:Sprite;
private var _vx:Number = 1;
private var _vy:Number = 0;
private var _timer:Timer;
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
_sprite = new Sprite();
_sprite.graphics.beginFill(0xffff00, 100);
_sprite.graphics.drawCircle(0, 0, 50);
_sprite, graphics.endFill();
_sprite.x = 0;
_sprite.y = 50;
addChild(_sprite);
_timer = new Timer(25);
_timer.addEventListener("timer", onTimer);
_timer.start();
}
public function onTimer(event:TimerEvent):void {
_sprite.x += _vx;
_sprite.y += _vy;
}
}
}
и выполняем сборку проекта.
Получаем swf ролик, работу которого можно проверить в браузере, например в GoogleChrome или в любом другом браузере при наличии установленного для
этого браузера плагина Adobe Flash Player.
Данный проект демонстрирует анимацию желтой окружности по таймеру с интервалом 25 миллисекунд.
Итак, если с созданием проекта в среде FlashDevelop у вас вопросов больше нет (а если есть - то посмотрите еще такие статьи -
Учимся создавать флеш-игры, что нужно знать для того, чтобы заняться созданием flash приложений и игр ?
Изучаем Flash)
Перейдём ко 2 вопросу -
2)
Как подготовить анимацию персонажа во Flash CS5 и экспортировать в SWC библиотеку
Если у вас нет под рукой готового персонажа, то предварительно надо его нарисовать и анимировать. Это подробно описано в одной из моих статей -
Рисуем волка
В статье подробно описано как нарисовать волка в Photoshop, а затем анимировать его хотьбу. Если Вы научитесь это делать сами, тогда создать любого другого персонажа (как например моего зомби, который представлен в данном уроке) для вас уже не составит большого труда.
Итак, будем считать, что персонаж уже у вас готов и анимирован. Нам остается только разобраться каким образом вставить его в ваше приложение Flash Develop.
Простой способ - путём загрузки картинки, например в формате PNG тут не пройдёт, поскольку желательно, чтобы Ваша флешка swf хранила всё необходимое внутри себя в виде ресурсов и не требовала больше никаких внешних файлов.
Для работы Вам понадобится среда Adobe Flash CS5 или выше.
Пошагово процесс выглядит так:
1) Запускаем Flash CS5.
2) Создаем новый пустой проект AS3.
3) Выполняем File > import > import to stage > png - обращаю ваше внимание что каждый кадр анимации должен быть представлен отдельным PNG-файлом. При этом удобно создать для всех кадров отдельную папку, а при импорте сразу выбрать эту папку и все файлы в ней.
4) Произойдёт вставка всех изображений в сцену AS3-проекта. Пока выделение с объектов не снято - кликните по ним правой кнопкой мыши и выберите пункт Distribute to Layers (т. е. распределить по слоям)

5) Далее даем каждому слою имя, которое будет однозначно определять каждый кадр анимации и пока слой выделен нажимаем F8 чтобы преобразовать его в символ.

6) Не забудьте включить сглаживание изображения (smoothing) в библиотеке - для этого нужно кликнуть по изображению правой кнопкой в панели списка изображений СПРАВА и выбрав Properties > Bitmap properties установить сглаживание - для PNG сжатие желательно вообще отключить. Тогда никаких искажений не будет.

7) Теперь остается экспортировать ваш анимированный спрайт в SWC библиотеку. Об этом уже рассказано в статье
Flash. Экспорт SWC библиотеки.
8) В результате получим некий SWC библиотечный файл, который вам остается разместить в папке lib вашего FlashDevelop проекта.
После того, как это сделано, нужно добавить классы swc-библиотеки во FlashDevelop проект. Для этого в рабочей среде FlashDevelop просто кликаем правой кнопкой по названию добавленной SWC библиотеки и выбираем пункт Add to Library.
После того как эти шаги успешно сделаны Вы можете перейти к решению следующего вопроса:
3)
Как использовать полученную в SWC библиотеке анимацию в AS3-приложении
Сделать это можно самыми разными способами, тот способ который я предложу вам в данной статье не является истиной в последней инстанции, но главное - он уже дает нужный нам результат - т. е. перемещаемого и анимированного персонажа.
Вот собственно необходимый код для реализации -
====================
package walked_zomby
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private var _vx:Number = 1;
private var _vy:Number = 0;
private var _timer:Timer;
private var zomby_frames: Array;
private var current_frame: int;
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
current_frame = 1;
zomby_frames = new Array();
zomby_frames.push(new walked_zomby_right_1);
zomby_frames.push(new walked_zomby_right_2);
zomby_frames.push(new walked_zomby_right_3);
zomby_frames.push(new walked_zomby_right_4);
zomby_frames.push(new walked_zomby_right_5);
zomby_frames.push(new walked_zomby_right_6);
zomby_frames.push(new walked_zomby_right_7);
zomby_frames.push(new walked_zomby_right_8);
for ( var i:int = 0; i < 8; i++ )
{
addChild(zomby_frames[i]);
(Sprite)(zomby_frames[i]).visible = false;
}
(Sprite)(zomby_frames[0]).visible = true;
_timer = new Timer(100);
_timer.addEventListener("timer", onTimer);
_timer.start();
}
public function onTimer(event:TimerEvent):void {
for ( var i:int = 0; i < 8; i++ )
{
var sx:int = (Sprite)(zomby_frames[i]).x;
if ( sx > 300 )
{
sx = 0;
(Sprite)(zomby_frames[i]).x = sx;
}
(Sprite)(zomby_frames[i]).x += _vx;
}
(Sprite)(zomby_frames[current_frame-1]).x += _vx;
(Sprite)(zomby_frames[current_frame-1]).visible = false;
if ( current_frame < 8 )
{
current_frame += 1;
}
else {
current_frame = 1;
}
(Sprite)(zomby_frames[current_frame-1]).visible = true;
}
}
}
====================
У нас с вами остаются 2 вопроса -
4)
Как управлять анимированным персонажем от клавиатуры и мыши
5)
Фокус ввода для Flash-приложения в браузере
4)
Как управлять анимированным персонажем от клавиатуры и мыши
Пока опыт мой во флеше не такой уж большой, поэтому всё что я здесь опишу - это лишь результаты моих проб и ошибок. Я конечно добиваюсь, чтобы поставленная задача была решена, но имейте в виду, что всё что здесь написано - ни в коем случае не самое правильное и оптимальное решение.
Итак, приступим. Оказывается, чтобы заставить вашего персонажа реагировать на клавиши СТРЕЛКА ВЛЕВО/СТРЕЛКА ВПРАВО нужно учесть всего 2 важных момента:
4.1 ) Это правильно написать "слушатель" - т. е. метод объекта класса вашего приложения, который будет обрабатывать события ввода
и второе -
4.2) Сделать так, чтобы ваш объект мог получать "фокус ввода". В противном случае нажатия клавиш не будут обрабатываться правильно, т. е. попросту говоря персонаж не будет перемещаться по нажатию клавиш.
Теперь рассмотрим необходимый для этого код -
//в метод public function Main():void добавляем такой код
stage.focus = this;
addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
//в классе приложения объявляем метод "слушатель" onKeyDown
private function onKeyDown(event:KeyboardEvent):void {
if ( event.keyCode == Keyboard.RIGHT )
{
MoveHero();
}
}
//ну и наконец самое главное
//в код, который я уже приводил выше нужно добавить такую строку -
for ( var i:int = 0; i < 8; i++ ) //это код, который я уже приводил выше, когда рассматривал вопрос номер 3
{//это код, который я уже приводил выше, когда рассматривал вопрос номер 3
addChild(zomby_frames[i]);//это код, который я уже приводил выше, когда рассматривал вопрос номер 3
(Sprite)(zomby_frames[i]).visible = false;//это код, который я уже приводил выше, когда рассматривал вопрос номер 3
(MovieClip)(zomby_frames[i]).buttonMode = true; //это новая строчка кода, благодаря которой зомби сможет быть управляем от клавиатуры !!!
}//это код, который я уже приводил выше, когда рассматривал вопрос номер 3
(Sprite)(zomby_frames[0]).visible = true;//это код, который я уже приводил выше, когда рассматривал вопрос номер 3
5)
Фокус ввода для Flash-приложения в браузере
Тут всё просто - делайте свои флеш-приложения таким образом, чтобы пользователь постоянно что-то кликал в них мышкой. Тогда фокус ввода будет постоянно находится на области вашего Flash-приложения и всё будет ОК.
[к содержанию]