среда, 20 февраля 2013 г.

Создаём HTML5 PaintBrush

Attention. First lesson presentation in english is available here
Almost the same.
You have to  create text type object, name it as text01, insert it into stage
And change program code in the end of the list.
It makes the cursor draw if A-key pressed, and cleanes canvas when S-keys press.

demo is here http://2l4u.ru/program_507.php

На самом первом уроке, хочется рассмотреть обязательные шаги необходимые при создании игры с помощью сервиса 2l4u.ru

1. Входим в систему.
2. Создаём новый проект.



3. Открываем вкладку Объекты и создаём объект "text01"



4. Теперь открываем вкладку Сцена
Открываем сцену на редактирование


Теперь нужно вытащить объект text01 на сцену



5. После этого находим Контроллер "ctrl"
Нажимаем на шестерёнку и вызываем окно свойств



В окне свойств нам нужно добавить событие Create - создание. Это событие
 стартует в начале игры. И это именно то, что нам нужно.

Итак, добавляем событие Create

Выбираем "Create" из списка

Результатом, действием на это событие добавим "blank script"

 
теперь откроем blank script - чистый скрипт на редактирование...


Откроется окно Редактор событий


В секции "editor window" копируем следующий код:

//insert CANVAS tag into the game field
$("#contnt").append('<CANVAS></CANVAS>');
// mode toggle variable
var draw=0;

// 2d contest handler
var canvas = document.querySelector("canvas"); 
// obj1 of 2d contest
var holst = canvas.getContext("2d");

canvas.width=screen_width; 
canvas.height=screen_height;

// work with keyboard
$(document).keydown(function(n) {
switch (n.keyCode){
 // A letter key
case 65:
my_obj_1.fillStyle="#ffffff";
draw=draw+1;
$("#text01").html("PB draw :: Press A to Stop :: Press S to Clear");
if (draw>1){
draw=0;
$("#text01").html("PB don't draw :: Press A to Draw :: Press S to Clear");
}
   break;

// S letter key
case 83:

holst.fillStyle="black"; 
holst.fillRect(0,0,canvas.width,canvas.height);

break;

}
});


// canvas field

holst.fillStyle="black"; 
holst.fillRect(0,0,canvas.width,canvas.height);

// brush

var rect_width=5;
var rect_height=5;
var my_obj_1 = canvas.getContext("2d");
my_obj_1.fillStyle="#ffffff";

// work with mouse

$("#contnt").mousedown(function() {
my_obj_1.fillStyle="#ffffff";
my_obj_1.shadowColor = '#00ffff';
my_obj_1.shadowBlur = 10;
draw=1;
});
$("#contnt").mouseup(function() {
draw=0;
});

 
  var mouse_y;
  var mouse_x;

// calculate mouse position for the brush
   $(document).mousemove(function(e){
  
   mouse_y=e.pageY;
   mouse_x=e.pageX;
 
if (draw==1){
 

  my_obj_1.fillRect(mouse_x,mouse_y,rect_width,rect_height);
   x=mouse_x;
   y=mouse_y;
}

}); 

// decoration for the status text

$("#text01").css("background","#ffd700");
$("#text01").css("border","1px    solid    #110f00");
$("#text01").css("padding","3px");
$("#text01").css("cursor","pointer");
$("#text01").css("left","3px");
$("#text01").css("top","3px");
$("#text01").css("width",(screen_width-12));
$("#text01").css("height","20px");

$("#text01").html("PB: don't draw :: Press A to Draw :: Press S to Clear");



Теперь нажмём "Сохранить".
Далее, закроем все окна и нажмём "Пуск" или "run game"

Когда запустится наша игра, при нажатии клавиши A- программа будет переключаться между режимами рисования и "нерисования", S-будет стирать нарисованный рисунок




lesson 3 Moves and Keyboard - Движение и нажатия клавиш

Attention. First lesson presentation in english is available here
Almost the same. You have to change program code in the end of the list.
It makes the ball-object move by A-W-S-D keys.

На самом первом уроке, хочется рассмотреть обязательные шаги необходимые при создании игры с помощью сервиса 2l4u.ru

1. Входим в систему.
2. Создаём новый проект.



3. Загружаем в проект небольшой рисунок, я выбрал вот этот:
для этого в окне сцены нужно нажать на кнопку Upload и указать путь к вашему файлу




4. Теперь двигаем объект куда нам нужно на сцене... нажимаем Save Stage - сохраняем положение

5. Нажимаем на шестерёнку и вызываем окно свойств

В окне свойств нам нужно добавить событие Create - создание. Это событие
 стартует в начале игры. И это именно то, что нам нужно. Вообще есть два самых важных события - Step - Шаг - событие, которое обновляется через равные промежутки времени (по умолчанию 25 миллисекунд) и Событие Create - которое не обновляется, хотя функции могут работать или до своего завершения или в течения всей игры. Событие Шаг (Step) используется для дополнительной проверки состояний игровых объектов... например, можно проверить номер кадра в спрайте, или расстояние между объектами, или произошло ли столкновение объектов...
Извините, отвлёкся!
Итак, добавляем событие Create

Выбираем "Create" из списка

Результатом, действием на это событие добавим "blank script"

 
теперь откроем blank script - чистый скрипт на редактирование...


Откроется окно Редактор событий


В секции "editor window" копируем следующий код:

$(document).keydown(function(e) {  
   
    switch (e.keyCode) {
   
    case 65 :
    var x=get_obj_x("#object_1");
    x=x-3;
    $("#object_1").css("left",x);
    break;

    case 87 :
    var y=get_obj_y("#object_1");
    y=y-3;
    $("#object_1").css("top",y);
    break;

    case 83 :
    var y=get_obj_y("#object_1");
    y=y+3;
    $("#object_1").css("top",y);
    break;

    case 68 :
    var x=get_obj_x("#object_1");
    x=x+3;
    $("#object_1").css("left",x);
    break;
 
  }   
    });


Теперь нажмём "Сохранить".
Далее, закроем все окна и нажмём "Пуск" или "run game"

Когда запустится наша игра, при нажати A-W-S-D  шарик(object_1) будет двигаться


Пояснение
Конструкция $(document).keydown(function(e) {  - используется для перехвата нажатий клавиатуры. 

Конструкция e.keyCode - помогает извлечь цифровое значение ключа клавиатуры.
Если мы задумали сделать шарик послушным клавишам "A-W-S-D" , тогда мы должны переключать направление движения

a-65
w-87
s-83
d-68

 switch (e.keyCode) { - переключится при нажатии
case 65 : - если e.keyCode равно 65 ... далее выполняется код; case - начало блока

var x=get_obj_x("#object_1"); - создаём переменную x присваиваем ей координату x обекта - "object_1"

 x=x-3;  уменьшили значение

 $("#object_1").css("left",x); - с помощью CSS  сдвинули объект по оси х
 
break; - завершение выполнения кода - конец блока

вторник, 19 февраля 2013 г.

second lesson - it moves! Урок 2 - Движется!

Если Вы выполнили урок 1. У вас должен был сохранится проект урока 1.
Тогда, это проект можно оставить "на память", скопировать и начать работать с новым.

Если вы не проходили урок первый и у вас нет проекта, тогда Вам следует создать проект. Как это делается написано в уроке 1 http://2l4udotru.blogspot.ru/2013/02/first-lesson.html
Или
можно посмотреть ролик на эту тему http://2l4u.ru/program_475.php

Откройте список проектов, активируйте ваш проект, если он неактивный.
Теперь нажмите кнопку "Копировать проект"...
После копирования,
 у Вас, в списке проектов возникнет проект с префиксом cloned_from_ далее имя ваше проекта.

Активируйте его, теперь это ваш скопированный проект.
Теперь открываем вкладку меню Сцена. А затем, открываем сцену на редактирование

Находим на цене object_1 и нажимаем на значёк в виде шестерёнки
После это откроется окно "Свойства объекта"

 Удаляем содержимое окна Edit Action Parameters
Вместо, того, что было напишем сл. код:

$("#object_1").css("cursor","pointer");

$("#object_1").click(function(){  
// определяем положение объекта по оси х
var x=get_obj_x("#object_1");
// увеличиваем значение
x=x+50;
// двигаем объект
$("#object_1").animate({left:+x+"px"},500,function(){ });

});

Нажимаем "Сохранить"
Закрываем окно "Свойства объекта"

Нажимаем "run game" или "Пуск"
Теперь при щелчке объект начинает двигаться по оси х, направо




Работа с изображениями. Эффект затемнения

Иногда требуется сделать, что-то вроде слайд-шоу для организации презентации.
Как это сделать.

1. Создаём новый проект на 2l4u.ru . Проект на 2l4u.ru это ваша папка на сервере, куда вы можете загружать картинки, сценарии, 3d графику, звуки

Нажимаем кнопку "Создать проект"


Открывается окно с шаблонами проектов. Мы создадим "пустой проект" - без шаблона

Придумываем какое-нибудь имя проекту и нажимаем "Создать"

После этого открываем вкладку "Объекты" и создаём объект текст со следующими характеристиками:


Теперь загрузим наши картинки
Открываем вкладку "Спрайты"
Выбираем картинки, загружаем






После этого нажимаем вкладку "Сцена" и возвращаемся в список сцен. У нас всего одна сцена, чтобы начать её редактировать нужно нажать значок в виде карандашика




Открываем сцену на редактирования. Открываем с лева список "Текст" и вытаскиваем текст на сцену:
Теперь слева находим "контроллер"


Нажимаем на шестерёнку - вызываем редактор поведения и добавляем событие "Create" и вставляем действие "blank script"






Открываем  "Редактор параметров событий"
Присваиваем объекту изображение с помощью конструкции ".html"


Однако, для коректной работы нам необходимо дать программе некоторое время чтобы плавно загрузить графику.
У нас должно получится следующие:
// вставляем в элемент pixcont первую нашу картинку
("#pixcont").html('<img src="allpics/1361160641.jpg" border=0>');

// делаем pixcont невидимым
$("#pixcont").css("display","none");

// стартует эффект fadein  - первая картинка становится видимой
$("#pixcont").fadeIn("slow",function(){
// задержка в 200 миллисекунд и стартует эффект  fadeout
$("#pixcont").delay(2000).fadeOut(3000,function(){
// вставляем в элемент pixcont нашу вторую картинку
$("#pixcont").html('<img src="allpics/1361160635.jpg" border=0>');
 // стартует эффект fadein  - вторая картинка становится видимой
$("#pixcont").fadeIn(2000,function(){
//задержка в 200 миллисекунд и стартует эффект  fadeout
$("#pixcont").delay(2000).fadeOut(3000,function(){
// вставляем в элемент pixcont  картинку 3
$("#pixcont").html('<img src="allpics/1361160647.jpg" border=0>');
 // стартует эффект fadein  - картинка 3 становится видимой
$("#pixcont").fadeIn(2000,function(){
});
});
});
});
});

Дополнительно можно украсить наш элемент pixcont
// добавляем обводку
$("#pixcont").css("border","1px    solid    #110f00");
// добавляем отступ внутри
$("#pixcont").css("padding","3px");
// выравниваем под размер экрана
$("#pixcont").css("width",screen_width-20);
$("#pixcont").css("height",screen_height-20);
// отступаем от края
$("#pixcont").css("left",10);
$("#pixcont").css("top",10);

Жмём Сохранить, закрываем редактор параметров события объекта
Закрываем окно "Свойства объекта"
Нажимаем "run game" или "Пуск" наверху в меню

После запуска мы могли заметить, что программа после показа картинок останавливается. 
Но как сделать, чтобы Слайд-шоу было постоянным?

Откроем контроллер
Для начала добавим в Свойства объекта событие "Step" - шаг
В этом событии коды обновляются через равные промежутки миллисекунд, и выполняются в зависимости от условия

Откроем blank script события "Step"
Напишем следующий код:
if (start_show==1){
start_show=2;
$("#pixcont").html('<img src="allpics/1361160641.jpg" border=0>');
$("#pixcont").fadeIn("slow",function(){
$("#pixcont").delay(2000).fadeOut(3000,function(){
$("#pixcont").html('<img src="allpics/1361160635.jpg" border=0>');
$("#pixcont").fadeIn(2000,function(){
$("#pixcont").delay(2000).fadeOut(3000,function(){
$("#pixcont").html('<img src="allpics/1361160647.jpg" border=0>');
$("#pixcont").fadeIn(2000,function(){
$("#pixcont").delay(2000).fadeOut(3000,function(){
start_show=1;
});
});
});
});
});
});

}

Пояснение:
У нас появилось условие if (start_show==1){ - если переменная start_show равно 1.
Можно заметить, что второй строчкой после выполнения условия переменная start_show становится равной 2. Так как условие будет проверятся в событии Step каждый 25-50 миллисекунд, необходимо дать картинкам время благополучно покрутиться.  Как-только все картинки выйдут из затемнения и вернуться обратно, переменная start_show станет равной 1
Это означает, что слайд-шоу начнётся снова. Мы получили цикл, что нам и было нужно.

Теперь, осталось исправить blank script в событии "Create"
Он будет выглядеть так
var start_show=1;

$("#pixcont").html('<img src="allpics/1361160641.jpg" border=0>');

$("#pixcont").css("display","none");

Пояснение
var start_show=1; - объявляем переменную и присвиваем ей значение. Это запустит реакцию в событии Step 

Кроме того, мы присваиваем первую картинку элементу pixcont и делаем его невидимым

Нажимаем Сохранить. Закрываем окно "Свойства объекта". Нажимаем "run game"



Demo file of this lesson is here: http://2l4u.ru/program_500.php






суббота, 16 февраля 2013 г.

2l4u.ru Dress up! Создание игры - одевалки


Creating your own dress up game movie is here http://2l4u.ru/program_495.php
Demo file of this lesson is here: http://2l4u.ru/program_492.php

Для создания игры-одевалки нам понадобиться:

1. Изображение модели... я долго ждал изображение от своего художника, потом не выдержал, взял инк-скейп и вот что получилось


Сразу почему-то на ум приходит фильм "Покровские ворота" - "Я вся такая - неловкая... угловатая"
Ну, да ладно. Вы можете использовать свой рисунок или улучшить мой с помощью бесплатной, ещё пока, программы InkScape.
Скачать рисунок в формате PNG можно отсюда
Скачать рисунок в формате SWG можно отсюда

Удивительная программа Inkscape находится здесь: http://inkscape.org/

2. Итак создадим новый проет на http://www.2l4u.ru/gamecreator.pia


Я намеренно не использую шаблон игры-одевалки именно для того, чтобы было предельно ясно как всё работает



После создания проект откроется сцена:

Загружаем картинку нашей, ну или, Вашей модели.
Модель можно расположить по центру и нажать на кнопку - "save stage" - сохранить сцену.

Сразу бросается в глаза, что наша модель больше сцены поэтому нужно войти в список сцен, как показано на рисунке ниже

После этого откроется список сцен. У нас одна сцена, у неё нужно изменить параметры.
Для этого нажмём на шестерёнку

Откроется окно параметров. Ширину можно чуть-чуть увеличить до 800 пикселей, а высоту сделать 520 или 560




Жмём "Изменения параметров".
Теперь нам нужно вернуться на сцену, нажимаем значёк  "карандаш"



Теперь можно загрузить одежду.
Одежду можно скачать отсюда http://2l4u.ru/pub/_girl_1_clouses.zip
Или, если хотите доработать в формате svg отсюда http://2l4u.ru/pub/_all_dress.svg



Если мы запустим проект - нажмём "Пуск" или "run stage", мы заметим, что одежда не перетаскивается.
Для того, чтобы задействовать эффект перетаскивания нам нужно дополнить проект библиотекой.

1. Скачиваем скрипт для реализации функции drag-n-drop (перетаскивания) здесь http://2l4u.ru/pub/jquery.easydrag.handler.beta2.js

2.  Теперь открываем вкладку "Основные сценарии"


3. Находим  скаченный файл и загружаем.
4. Когда файл появится в списке "Пользовательские скрипты" переходим во вкладку "Объекты"

Теперь мы можем реализовать функцию перетаскивания присвоив любому нашему объекту свойство "easydrag"

Как это сделать.

Я уже говорил, что существуют 4 типа объектов. То, что мы загрузили объекты актёры.
Чтобы нам не открывать каждый, и не присваивать ему свойство можно создать объект типа "Контроллер" и присвоить свойства всем, используя этот объект.

1. Открываем вкладку объекты. Создаём объект контроллер


2. Открываем вкладку "События объекта"
3. Добавляем событие "Create" , а в событие "Create" добавлем действие "blank script" - пустой сценарий

4. Теперь открываем "blank script" на редактирование


5. Нажимаем на каждый объект, кроме объекта "the girl" и добавлем
 фразу .easydrag();

Должно получиться:

$("#object_8").easydrag();
$("#object_7").easydrag();
$("#object_6").easydrag();
$("#object_5").easydrag();
$("#object_4").easydrag();
$("#object_3").easydrag();
$("#object_2").easydrag();

Нажимаем  Сохранить.

Нажимаем Пуск.
Теперь одежду можно перемещать.
Более, того, во время перемещения, перемещаемый объект выходит поверх других объектов.

Во второй части я расскажу один из способов сохранения результата