воскресенье, 25 октября 2009 г.

Подсказка по Flash

На портале Сеть творческих учителей / ИКТ в начальной школе Ирина Александровна Вырвич опубликовала flash-игру Танграм. Я предложила добавить в игру завершающий кадр, который бы поощрял игрока, что-то вроде завершающей точки. Из возможных вариантов, выбрала два самых простых.
Первый вариант. В дополнение к кадру, на котором расположена игра, создать еще два кадра: один – «правильно», второй – «неправильно». Также на кадр с игрой добавить кнопку проверки и созданные мувиклипы, с которыми должно произойти столкновение.

В слое со скриптом в первом кадре добавить код проверки на столкновение, где gotovo – это имя кнопки, romb, romb1, pr, pr1, tr1, tr11, tr2, tr22 – имена мувиклипов (фигур и объектов с которыми они должны столкнуться):

stop();
gotovo.onRelease = function() {
if (_root.romb.hitTest(_root.romb1) and _root.pr.hitTest(_root.pr1) and _root.tr1.hitTest(_root.tr11) and _root.tr2.hitTest(_root.tr22)) {

_root.gotoAndStop(2);
} else {
gotoAndStop(3);
}
};

Вот что получается.



Но мне кажется, что такая проверка в конце этой игры не совсем подходит, так как и так понятно, что фигуры заняли свое место.
Второй вариант более подходящий, и прост в написании. В отличие от первого варианта, после вращения фигуры по клику мыши, мышь отпускать не надо, а надо перемещать объект в нужную область. Правда код придется весь переделать.
Здесь все делается по тому же принципу, что описан в посте от 18 августа, но еще добавляется строка: _rotation +=90, которая говорит о том, что при клике мыши, мувиклип должен повернуться на 90 градусов.

stop ();
tr1.onPress = function () {
this.startDrag();
tr1._rotation +=90;
_root.checkHit_int = setInterval(_root.checkHit_func, 100);
}
tr1.onRelease = tr1.onReleaseOutside=function () {
this.stopDrag();
clearInterval(_root.checkHit_int);
};

tr2.onPress = function () {
this.startDrag();
tr2._rotation +=90;
_root.checkHit_int = setInterval(_root.checkHit_func, 100);
}
tr2.onRelease = tr2.onReleaseOutside=function () {
this.stopDrag();
clearInterval(_root.checkHit_int);
};

romb.onPress = function () {
this.startDrag();
romb._rotation +=90;
_root.checkHit_int = setInterval(_root.checkHit_func, 100);
}
romb.onRelease = romb.onReleaseOutside=function () {
this.stopDrag();
clearInterval(_root.checkHit_int);
};

pr.onPress = function () {
this.startDrag();
pr._rotation +=90;
_root.checkHit_int = setInterval(_root.checkHit_func, 100);
}
pr.onRelease =pr.onReleaseOutside=function () {
this.stopDrag();
clearInterval(_root.checkHit_int);
};


function checkHit_func() {
if (_root.romb.hitTest(_root.romb1) and _root.pr.hitTest(_root.pr1) and _root.tr1.hitTest(_root.tr11) and _root.tr2.hitTest(_root.tr22)) {

_root.gotoAndStop(2);
}
}


0 коммент.:

Отправить комментарий