PDA

Просмотр полной версии : вращение картинки


NikolyA
26.09.2007, 20:39
Ребята у меня к Вам еще одна просьба такого характера, подскажите как проделать такую штуку: я загружаю картинку в мувик, и теперь мне надо сделать вращение по часовой и против часовой стрелки с помощью ползунка для вращения картнки, у меня получилось картинку вращать с помощью 2-х кнопок: используя такой код:
для кнопки по часовой стрелки:

img._rotation +=90;
_root.mc=_root.img;
if(img._rotation==0){
_root.img._x = 512-_root.mc._width/2;
_root.img._y = 140+628/2-_root.mc._height/2;
}else if(img._rotation==90){
_root.img._x = 512+_root.mc._width/2;
_root.img._y = 140+628/2-_root.mc._height/2;
}if(img._rotation==180){
_root.img._x = 512+_root.mc._width/2;
_root.img._y = 140+628/2+_root.mc._height/2;
}else if(img._rotation==-90){
_root.img._x = 512-_root.mc._width/2;
_root.img._y = 140+628/2+_root.mc._height/2;
}

и против часовой стрелки вот таки кодом:

img._rotation -=90;
_root.mc=_root.img;
if(img._rotation==0){
_root.img._x = 512-_root.mc._width/2;
_root.img._y = 140+628/2-_root.mc._height/2;
}else if(img._rotation==90){
_root.img._x = 512+_root.mc._width/2;
_root.img._y = 140+628/2-_root.mc._height/2;
}if(img._rotation==-180){
_root.img._x = 512+_root.mc._width/2;
_root.img._y = 140+628/2+_root.mc._height/2;
}else if(img._rotation==-90){
_root.img._x = 512-_root.mc._width/2;
_root.img._y = 140+628/2+_root.mc._height/2;
}


вот такая вот картина. А теперь как прицепить это к ползунку на вращение, я не знаю, мозгов видать не хватает! обращаюсь к Вам друзья, товарищи, подскажите плиз!!!

Mnilionic
26.09.2007, 21:36
нужно сделать одну функцию, которая отвечает за поворот картинки.
это функция будет получать два параметра:
1 направление (по часовой / против)
2 угол поворта

при таскании ползунка будет запускать эта функция
если выше "середины" ползунка то по часовой, ниже "против"
чем большо отклонение от середины, тем больше угол поворота

По этому для начала вам нужно переписать ваши функции...
картинку можно вращать гораздо проще если её положить в пустой мувик и в нём сдвинуть её по X и по Y на половину размера соотвественно ширине и высоте :)
и тогду искомая функция вращения будет выглядеть так:

function rotate_me(direct, alfa){
mc.img_box._ratation = alfa * direct;
}

неправдали просто?

NikolyA
26.09.2007, 22:02
Mnilionic! а можешь помочь, я вижу у тебя опыта чуть больше моего! Помоги плиз!!!!

udaaff
26.09.2007, 22:53
my_mc = createRect(this, getNextHighestDepth(), -50, -50, 100, 100);
my_mc._x = 100;
my_mc._y = 100;
//
slider_mc = createEmptyMovieClip("slider_mc", getNextHighestDepth());
slider_mc._x = 100;
slider_mc._y = 200;
rect_mc = createRect(slider_mc, slider_mc.getNextHighestDepth(), 0, 0, 10, 20);
//
l = 200;
//
rect_mc.onPress = function() {
this.startDrag(false, 0, 0, l, 0);
this.onMouseMove = rotateMC(my_mc);
};
//
rect_mc.onRelease = rect_mc.onReleaseOutside=function () {
this.stopDrag();
delete this.onMouseMove;
};
//
function rotateMC(mc) {
return function () {
mc._rotation = this._x/l*360;
updateAfterEvent();
};
}
//
function createRect(cont, depth, x, y, w, h) {
var rect_mc = cont.createEmptyMovieClip("rect_mc", depth);
with (rect_mc) {
lineStyle(0);
beginFill(0x00FF00, 100);
moveTo(x, y);
lineTo(x+w, y);
lineTo(x+w, y+h);
lineTo(x, y+h);
lineTo(x, y);
}
return rect_mc;
}