Меню сайта
Категории раздела
Мои статьи [0]
Игры [2]
Уроки по созданию различных игр.
Анимация [1]
Уроки по созданию анимации
ActionScript(программирование) [14]
Уроки с использованием as
Наш опрос
Быстро ли загружается сайт?
Всего ответов: 93
Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Action Script 2.0 » ActionScript(программирование)

Создание игры типа "gold miner" v.1
1. Создаем 2 мувиклипа: boulder(Золото в виже желтого круга) и pod(Добытчик в виде зеленого треугольника). Во время их создания ставим галочку в поле "Экспорт для Action Script"!
2. Пишем в 1 кадре код...


// number of boulders in the game
boulders = 20;
for (x=1; x<=boulders; x++) {
// creating the boulders
bould = _root.attachMovie("boulder", "boulder_"+_root.getNextHighestDepth(), _root.getNextHighestDepth());
// placing them in random positions and with random dimensions
bould._x = Math.floor(Math.random()*400)+50;
bould._y = Math.floor(Math.random()*200)+150;
bould._width = Math.floor(Math.random()*30)+20;
bould._height = bould._width;
// setting picked attribute as false
// picked = false => the boulder has not been picked by the hook
// picked = true => the boulder has been picked
bould.picked = false;
// function to be executed at every frame for the boulder
bould.onEnterFrame = function() {
// if it's not been picked...
if (!this.picked) {
// check if the hook is in shoot mode and touched the boulder
// you'll see later what do hot_spot_x and hot_spot_y mean
if (pod_status == "shoot" and this.hitTest(hot_spot_x, hot_spot_y, true)) {
// set the hook on rewind mode
pod_status = "rewind";
// mark this boulder as picked
this.picked = true;
// determining the slowdown according to boulder size
slowdown = Math.floor(this._width/5);
}
}
else {
// the boulder has been picked, so move it as the hook moves
this._x = hot_spot_x;
this._y = hot_spot_y;
// if the hook status changed to rotate
// (this means: if the hook took a boulder and pulled it out to surface...
if (pod_status == "rotate") {
// remove the boulder
this.removeMovieClip();
}
}
};
}
// placing the hook on stage
_root.attachMovie("pod","pod",_root.getNextHighestDepth(),{_x:250});
// creating an empty movie clip to draw the rope
_root.createEmptyMovieClip("rod",_root.getNextHighestDepth());
// this is the rotation direction and speed
rotation_dir = 2;
// hook initial status
pod_status = "rotate";
// slowdown malus
slowdown = 0;
// function the hook will execute at every frame
pod.onEnterFrame = function() {
// getting pod status
switch (pod_status) {
case "rotate" :
// if the status is rotate, just rotate the hook according to rotation_dir
this._rotation += rotation_dir;
if (this._rotation == 80 or this._rotation == -80) {
// invert rotation_dir if the hook reaches its minimum (or maximum) rotation allowed
rotation_dir *= -1;
}
break;
case "shoot" :
// the hook has ben shoot
// (re)set slowdown malus to zero
slowdown = 0;
// moving the hook using trigonometry
this._x += 10*Math.cos(dir);
this._y += 10*Math.sin(dir);
// determining the hot spot of the hook
// the hot spot is the lowest corner of the hook (that acts like an harpoon in this case)
hot_spot_x = this._x+40*Math.cos(dir);
hot_spot_y = this._y+40*Math.sin(dir);
// if the hot spot goes off the stage
if (hot_spot_y>400 or hot_spot_x<0 or hot_spot_x>500) {
// then rewind the hook
pod_status = "rewind";
}
// draw a line from the hook starting position to its actual position
// this will simulate the rope
rod.clear();
rod.lineStyle(1,0x000000);
rod.moveTo(250,0);
rod.lineTo(this._x,this._y);
break;
case "rewind" :
// rewinding the hook...
// it may seem a nonsense determining the hot spot now, but I need id
// to move the boulder (if I have any boulder attached to the hook)
hot_spot_x = this._x+40*Math.cos(dir);
hot_spot_y = this._y+40*Math.sin(dir);
// moving the hook with slowdown malus (if any)
this._x -= (10-slowdown)*Math.cos(dir);
this._y -= (10-slowdown)*Math.sin(dir);
// if the hook returns in its initial position...
if (this._y<0) {
// then reset its position and set its status to rotate
this._y = 0;
this._x = 250;
pod_status = "rotate";
}
// drawing a line as seen in shoot status
rod.clear();
rod.lineStyle(1,0x000000);
rod.moveTo(250,0);
rod.lineTo(this._x,this._y);
break;
}
};
// when the mouse is clicked...
_root.onMouseDown = function() {
// if the status is rotate...
if (pod_status == "rotate") {
// save hook heading and convert it to radians
dir = (pod._rotation+90)*0.0174532925;
// set pod status to shoot
pod_status = "shoot";
}
};

}

Всё готово... =)

Скачать .fla исходник вы можете здесь

Категория: ActionScript(программирование) | Добавил: Добрый (07.11.2010)
Просмотров: 1085 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
7flash.ucoz.ru. 2009-2012.
Сайт управляется системой uCoz