В този интересен урок, нашият потребител и Flash-фен sovа ви представя възможността да си направите интересната игра от типа "Тука има, тука няма" :)
И така, да започваме!
Урокът не обяснява самото 'рисуване' на графичните елементи на играта, така че се предполага, че това ви е ясно.
1. Отворете нов документ:
File > New > Flash Document > Ok
2. Настройте кадрите в секунда на 30, височината на 250, ширината на 500:
Modify > Document
.: Frame rate: 30
.: Height: 250
.: Width: 500
> Ok
2. Създайте чашките:
Съществуващия layer преименувайте на 'Chashi'.
Нарисувайте чашката. Можете да я направите както си искате, стига
да е достатъчно широка че да покрива (бъдещото) топче. Селектирайте я
и:
Modify > Convert to Symbol
.: Name: cup
.: Type: Movie clip
.: Registration: (долу посредата)
Properties >
.: Instatce Name: cup1_mc
Преместете cup1_mc вляво на сцената.
Копирайте cup1_mc (селект - Ctrl+C, Ctrl+V), нагласете втората
чашка вдясно от първата (някъде в центъра на сцената) и й задайте име:
Properties >
.: Instatce Name: cup2_mc
Повторете същото и за третата чашка, но я кръстете cup3_mc.
Чашките трябва да са на едно ниво, затова ги селектирайте,
натиснете Ctrl + K за да отоворите Align прозореца и там натиснете
бутона, който се намира на първия ред, най-вдясно (Align bottom edge).
3. Направете топчето:
Скрийте layer-а с чашките (като кликнете на кръгчето под окото)
Създайте нов layer, задайте му за име 'Topche' и го сложете под скрития layer 'Chashi'
Топчето също си избирате как да го направите. Като го нарисувате го селекрирайте и:
Modify > Convert to Symbol
.: Name: ball
.: Type: Movie clip
.: Registration: (точно посредата)
Properties >
.: Instatce Name: ball_mc
Сложете топчето на такова вертикално ниво, така че шашите да го
покриват. (Пробвайте да пускате и махате видимостта на слоя с чашите са
да сверявате.) Не е нужно по хоризонталата топчето да съвпада с някоя
от чашките, защото скриптът ще свърши тази работа.
4. Направете завесата:
По познатата вече процедура правите нов слой, слагате го над другите два и рисувате там.
Завесата трябва да е малко по-тясня от ширината на самия проект и
да е малко по-висока от документа. Като я напрвите, селектвате я и:
Modify > Convert to Symbol
.: Name: zavesa
.: Type: Movie clip
.: Registration: (долу посредата)
Properties >
.: Instatce Name: zavesa_mc
5. Създайте сцената за край на играта:
Направете нов слой и му дайте за име 'Kraj'.
Кликнете с десния бутон на мишката върху втория кадър след слоя 'Kraj' и от контекстното меню изберете 'Insert Blank Keyframe'.
Сега напишете каквото искате, подходящо за край на играта.
Направете и друго динамично текстово поле и му дайте име 'score_txt'.
Text Tool (T) ....
Properties >
.: Text Type: Dynamic
.: Instance Name: score_txt
Така свършва рисуването. Сега скриптът....
6. В първия кадър (на който и да е слой) сложете този скрипт: /
Това става в прозореца 'Actions', който може да бъде извикан от Window
> Actions или като натиснете F9/
stop();
import mx.transitions.Tween;
import mx.transitions.easing.*;
yN = cup1_mc._y;
yNz = zavesa_mc._y;
hits = 0;
tries = 0;
function randf():Number {
rand = Number(random(3))+1;
switch (rand) {
case 1 :
return (cup1_mc._x);
case 2 :
return (cup2_mc._x);
case 3 :
return (cup3_mc._x);
}
}
function allow():Boolean {
if (cup1_mc._y == yN && cup2_mc._y == yN && cup3_mc._y == yN && zavesa_mc._y == yNz) {
return (true);
} else {
return (false);
}
}
cup1_mc.onPress = function() {
if (allow()) {
T1 = new Tween(this, "_y", Strong.easeOut, yN, this._y-50, .5, true);
}
T1.onMotionFinished = function() {
tries += 1;
if (ball_mc._x == cup1_mc._x) {
hits += 1;
}
T12 = new Tween(cup1_mc, "_y", Bounce.easeOut, cup1_mc._y, yN, 1, true);
T12.onMotionFinished = function() {
T13 = new Tween(zavesa_mc, "_y", Back.easeOut, yNz, yN+20, 1, true);
T13.onMotionFinished = function() {
ball_mc._x = randf();
T14 = new Tween(zavesa_mc, "_y", Strong.easeIn, yN+20, yNz, 1, true);
if (tries == 10) {
gotoAndStop(2);
}
};
};
};
};
cup2_mc.onPress = function() {
if (allow()) {
T2 = new Tween(this, "_y", Strong.easeOut, yN, this._y-50, .5, true);
}
T2.onMotionFinished = function() {
tries += 1;
if (ball_mc._x == cup2_mc._x) {
hits += 1;
}
T22 = new Tween(cup2_mc, "_y", Bounce.easeOut, cup2_mc._y, yN, 1, true);
T22.onMotionFinished = function() {
T23 = new Tween(zavesa_mc, "_y", Back.easeOut, yNz, yN+20, 1, true);
T23.onMotionFinished = function() {
ball_mc._x = randf();
T24 = new Tween(zavesa_mc, "_y", Strong.easeIn, yN+20, yNz, 1, true);
if (tries == 10) {
gotoAndStop(2);
}
};
};
};
};
cup3_mc.onPress = function() {
if (allow()) {
T3 = new Tween(this, "_y", Strong.easeOut, yN, this._y-50, .5, true);
}
T3.onMotionFinished = function() {
tries += 1;
if (ball_mc._x == cup3_mc._x) {
hits += 1;
}
T32 = new Tween(cup3_mc, "_y", Bounce.easeOut, cup3_mc._y, yN, 1, true);
T32.onMotionFinished = function() {
T33 = new Tween(zavesa_mc, "_y", Back.easeOut, yNz, yN+20, 1, true);
T33.onMotionFinished = function() {
ball_mc._x = randf();
T34 = new Tween(zavesa_mc, "_y", Strong.easeIn, yN+20, yNz, 1, true);
if (tries == 10) {
gotoAndStop(2);
}
};
};
};
};
7. В кадър две сложете:
score_txt.text = hits+"/"+tries;
score2_txt.text = hits+"/"+tries;
again_btn.onPress = function() {
gotoAndStop(1);
};
8. Тествайте играта, чрез Ctrl + Enter! Забавлявайте се!
Обръщение от автора на играта:
"Както забелязвате уроците за flash са доста гадни, защото ако
объркате нещо малко накрая нищо не действа както трябва. Много
внимавайте кое как пишете и правите за да няма проблеми."