![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2007
Сообщений: 2
|
Люди добрые помогите кто может.... я по образованию художник... а нас пытаются в универе учить программировать. В обшем очень надо помогите...
Задача такова два шара находятся на противоположных сторонах поля (правый нижний и левый верхний углы) далее они должны двигаться на встречу друг другу в центр поля меняя прозрачность от 10% до 100... соприкоснувшись они должны уехать назад в свой угол снова понижая прозрачность до 10%. вся анимация есессно должна быть кодом Не смейтесь пожалуйста! очень надо ! помогите плиз буду по гроб жизни благодарен. и если не влом откоментируйте код ! ОЧЕНЬ ПРОШУ ПОМОГИТЕ ! Последний раз редактировалось MAMMOTH; 03.06.2007 в 11:37. |
|
|||||
|
в setInterval() или onEnterFrame() меняешь свойства _x, _y, _alpha до определённого предела.
з.ы. Цитата:
|
|
|||||
|
меценат
|
var r:Number = 30;
var angle:Number = 45;//угол под которым и происходит движение
var Go:Number = 3;
var rad:Number = Math.PI/180;
var control:Number = 1;
this.createEmptyMovieClip("circle", 1);
with (circle) {
createEmptyMovieClip("circle_mc", 1);
circle_mc.lineStyle(0, 0x000000);
circle_mc.beginFill(0x6600FF);
drawCircle(circle_mc, r, r, r);
}
function drawCircle(mc:MovieClip, x:Number, y:Number, r:Number):Void {
mc.moveTo(x+r, y);
mc.curveTo(r+x, Math.tan(Math.PI/8)*r+y, Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
mc.curveTo(Math.tan(Math.PI/8)*r+x, r+y, x, r+y);
mc.curveTo(-Math.tan(Math.PI/8)*r+x, r+y, -Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
mc.curveTo(-r+x, Math.tan(Math.PI/8)*r+y, -r+x, y);
mc.curveTo(-r+x, -Math.tan(Math.PI/8)*r+y, -Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
mc.curveTo(-Math.tan(Math.PI/8)*r+x, -r+y, x, -r+y);
mc.curveTo(Math.tan(Math.PI/8)*r+x, -r+y, Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
mc.curveTo(r+x, -Math.tan(Math.PI/8)*r+y, r+x, y);
}
//
circle.circle_mc.onEnterFrame = function() {
if (control == 1) {
this._x += Math.cos(angle*rad)*Go;
this._y += Math.sin(angle*rad)*Go;
//
if (this._x>=(Stage.width/2)-((r*2)-8)) {
control = -control;
}
}
//
if (control == -1) {
this._x -= Math.cos(angle*rad)*Go;
this._y -= Math.sin(angle*rad)*Go;
//
if (this._x<=0) {
control = -control;
}
}
};
//////
//////
//////
//////
//////
//////
this.createEmptyMovieClip("circle1", 2);
with (circle1) {
createEmptyMovieClip("circle_mc", 1);
circle_mc.lineStyle(0, 0x000000);
circle_mc.beginFill(0x6600FF);
drawCircle(circle_mc, r, r, r);
}
function drawCircle(mc:MovieClip, x:Number, y:Number, r:Number):Void {
mc.moveTo(x+r, y);
mc.curveTo(r+x, Math.tan(Math.PI/8)*r+y, Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
mc.curveTo(Math.tan(Math.PI/8)*r+x, r+y, x, r+y);
mc.curveTo(-Math.tan(Math.PI/8)*r+x, r+y, -Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
mc.curveTo(-r+x, Math.tan(Math.PI/8)*r+y, -r+x, y);
mc.curveTo(-r+x, -Math.tan(Math.PI/8)*r+y, -Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
mc.curveTo(-Math.tan(Math.PI/8)*r+x, -r+y, x, -r+y);
mc.curveTo(Math.tan(Math.PI/8)*r+x, -r+y, Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
mc.curveTo(r+x, -Math.tan(Math.PI/8)*r+y, r+x, y);
}
//
circle1.circle_mc.onEnterFrame = function() {
if (control == 1) {
this._x += Math.cos(angle*rad)*Go;
this._y += Math.sin(angle*rad)*Go;
//
if (this._x>=(Stage.width/2)-((r*2)-8)) {
control = -control;
}
}
//
if (control == -1) {
this._x -= Math.cos(angle*rad)*Go;
this._y -= Math.sin(angle*rad)*Go;
//
if (this._x<=0) {
control = -control;
}
}
};
circle1._x = Stage.width;
circle1._y = Stage.height;
circle1._rotation = 180;
![]() тихий ужас если пузыри не в кубическом поле то нужно подобрать угол движение "angle" под прямоугольник, если силен в матиматике то можно сделать програмно, насчет альфы сделать можно но тут все хитрей ведь неизвесны границы поля а если делать под универсальность нужно в проценты переводить что бы равномерно было
__________________
Безвыходных положений небывает © Барон Мюнхаузен=)Исходники |
|
|||||
|
Регистрация: Jun 2007
Сообщений: 2
|
.Огромное спасибо.... Вот только программа сложновата. я сам тут за ночь кое что своял.... правда работает не до конца ... назрел другой вопрос если делать это не такими сложными математическими функциями к примеру чтобы шарик двигался от точки х1 до точки х2 с шагом n нну dx=(x2-x1)/n; типа того...
var xb1=0;
var yb1=0;
var xb2=180;
var yb2=180;
var n = 50;
var dxb=(xb2-xb1)/n;
var dyb=(yb2-yb1)/n;
var x=xb1;
var y=yb1;
_root.ball._x =xb1;
_root.ball._y =yb1;
// MovieClip ball;
_root.onEnterFrame = function ()
{
x+=dxb;
y+=dyb;
_root.ball._x =x;
_root.ball._y =y;
}
помогите плиз все должно быть как то проще... вот только не получается...ЗЫ на унивверсальность можно забить.... мне бы так разобраться. Задачка то простая... вроде ... должна быть... у меня теперь вся проблема шарик от определенной точки назад заставить ехать. Последний раз редактировалось iNils; 03.06.2007 в 16:03. |
|
|||||
|
Регистрация: Oct 2005
Сообщений: 97
|
Предлагаю заюзать программную анимация с помощью класса Tween, поймать момент столкновения и пустить твином с параметром Back, как идея? =)
|
![]() |
![]() |
Часовой пояс GMT +4, время: 14:06. |
|
|
« Предыдущая тема | Следующая тема » |
|
|