Просмотр полной версии : Помогите сделать перемещение объекта на клик мыши
Dewranch
06.12.2012, 16:24
Macromedia Flash 8 Professional.
Помогите сделать так чтобы персонаж перемещался на то место куда кликнула мышь,и чтобы изменял направление в сторону мыши.
Что не получается, что уже есть? Или вам на блюдечке готовое?
Dewranch
06.12.2012, 16:34
Пытался через OnMouseClip не получается.
Фантазия не работает...
Добавлено через 2 минуты
Мне бы просто основу.
кнопка.onRelease = function(){
мышка кликнута тут - _xmouse _ymouse
объект_поехал()
}
function объект_поехал(){
объект.onEnterFrame = function()
{
объект._x += приращение по ИКС
объект._y += приращение по ИГРЕК
если ( он доехал куда надо ) - delete this.onEnterFrame
}
}
вот основы....
Dewranch
06.12.2012, 19:49
Получается если я введу этот код(предварительно отредактировав) то персонаж будет перемещаться на место где был клик и там остановится?
Ага, только декременты координат вам надо вычислить.
Школьны курс тригонометрии ;)
Dewranch
06.12.2012, 23:15
Не получается.
Можешь привести пример?
http://muravin2007.narod.ru/p44.htm
Что именно не получается?
Код можно видеть?
По разнице координат гипотенузу посчитать не получается?
Dewranch
06.12.2012, 23:42
кнопка.onRelease = function(){
OnMouseClip - _xmouse _ymouse
объект_поехал()
}
function объект_поехал(){
объект.onEnterFrame = function()
{
объект._x += приращение по ИКС
объект._y += приращение по ИГРЕК
если ( он доехал куда надо ) - delete this.onEnterFrame
}
}
Это всё что у меня получилось.
Не смейся пожалуйста.Просто я только неделю изучаю этот язык.
Подскажи что да как.
Привет, держи пример, думаю разберешься, object - имя экземпляра мувика который будет двигаться (задается в свойствах)
onMouseDown=function() {
tochkaX = _xmouse; //Координата Х куда кликнули
tochkaY = _ymouse; //Координата Y куда кликнули
MoveObject();
}
function MoveObject(){
onEnterFrame=function(){
if (object._x<tochkaX){
object._x++;
}
else if (object._x==tochkaX){
//координата Х достигнута
}
else {
object._x--;
}
if(object._y < tochkaY){
object._y++;
}
else if (object._y==tochkaY){
//координата Y достигнута
}
else{
object._y--;
}
}
}
Dewranch
07.12.2012, 12:43
Пишет ошибку:
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 1: Statement must appear within on/onClipEvent handler
onMouseDown=function() {
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 7: Statement must appear within on/onClipEvent handler
function MoveObject(){
Total ActionScript Errors: 2 Reported Errors: 2
vivado, что-то вы бредоватый код показываете.
Dewranch, код не нужно писать на клипах, пишите в кадрах.
Dewranch
07.12.2012, 13:08
МОжете показать в видео как сделать?А то не получается...
Dewranch
07.12.2012, 13:18
Просто я не понимаю ка сделать...Мне очень надо
Ну вот вам видео, интерактивное:
Stage.scaleMode = "noscale";
Stage.showMenu = false;
Stage.align = "tl";
function addCircle(addTo:MovieClip, x:Number, y:Number, speed) {
var depth = addTo.getNextHighestDepth();
var container = addTo.createEmptyMovieClip("clip_" + depth, depth);
container.lineStyle(1);
container.moveTo(-5,-5);
container.beginFill(0xFF0000);
container.lineTo(5,-5);
container.lineTo(5,5);
container.lineTo(-5,5);
container.lineTo(-5,-5);
container.moveTo(0,-0);
container.lineTo(5,0);
container.endFill();
container.cacheAsBitmap = tru;
container._x = x;
container._y = y;
container.speed = speed;
return container;
}
var targetX:Number = 500;
var targetY:Number = 300;
var toDegs = 180 / Math.PI;
for (var k = 0; k < 100; k++) {
addCircle(this, Math.random() * Stage.width, Math.random() * Stage.height, 1 + Math.random() * 50).onEnterFrame = playerEnterFrame;
}
function playerEnterFrame() {
if (this._x != targetX && this._y != targetY) {
var dx = targetX - this._x;
var dy = targetY - this._y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > this.speed) {
var angle = Math.atan2(dy, dx);
this._x += this.speed * Math.cos(angle);
this._y += this.speed * Math.sin(angle);
this._rotation = angle * toDegs;
} else {
this._x = targetX;
this._y = targetY;
}
}
}
this.onMouseDown = function() {
targetX = this._xmouse;
targetY = this._ymouse;
};
Только запускать в соответствующем плеере, конечно.
move_to_point_example.swf
Он хочет видео по работе с IDE......
Dewranch
07.12.2012, 13:29
Ну вот вам видео,интерактивное
Воот.Мне так и надо.Только что бы других кубиков небыло.
Ясно. А что вы в итоге хотите сделать?
Уберите просто цикл из моего кода и создайте отдельно один кубик.
Dewranch
07.12.2012, 13:40
Хочу сделать так что-бы стоит допустим смешарик.Ты поворачиваешь мышку и он смотрит в сторону курсора.Кликнул в пустое место и он туда отправился.
Добавлено через 49 минут
А как сделать поворот за курсором?
Добавлено через 1 час 30 минут
Как сделать поворот за курсором?
Добавлено через 3 часа 27 минут
Ещё вопрос:
Как сделать препятствия?Вот код игры:
Stage.scaleMode = "noscale";
Stage.showMenu = false;
Stage.align = "tl";
function addCircle(addTo:MovieClip, x:Number, y:Number, speed) {
var depth = addTo.getNextHighestDepth();
var container = addTo.createEmptyMovieClip("clip_" + depth, depth);
container.lineStyle(1);
container.moveTo(-5,-5);
container.beginFill(0xFF0000);
container.lineTo(5,-5);
container.lineTo(5,5);
container.lineTo(-5,5);
container.lineTo(-5,-5);
container.moveTo(0,-0);
container.lineTo(5,0);
container.endFill();
container.cacheAsBitmap = tru;
container._x = x;
container._y = y;
container.speed = speed;
return container;
}
var targetX:Number = 500;
var targetY:Number = 300;
var toDegs = 180 / Math.PI;
for (var k = 0; k < 100; k++) {
addCircle(this, Math.random() * Stage.width, Math.random() * Stage.height, 1 + Math.random() * 50).onEnterFrame = playerEnterFrame;
}
function playerEnterFrame() {
if (this._x != targetX && this._y != targetY) {
var dx = targetX - this._x;
var dy = targetY - this._y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > this.speed) {
var angle = Math.atan2(dy, dx);
this._x += this.speed * Math.cos(angle);
this._y += this.speed * Math.sin(angle);
this._rotation = angle * toDegs;
} else {
this._x = targetX;
this._y = targetY;
}
}
}
this.onMouseDown = function() {
targetX = this._xmouse;
targetY = this._ymouse;
};
Вы есть себе полностью безумный организм.
Это у вас не код игры, это копипаста из предыдущего поста.
Препятствия и прочее - гуглим A* (А стар)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.