PDA

Просмотр полной версии : Scale+Drag+Mask - как учитывать границы маски?


Olesolo
25.02.2007, 19:45
После scale, картинка drag`аеться нормально, но при scale, она уплывает всё время в левый верхний угол, т.е. в координаты 0,0 для картинки.

Подскажите пожалуйста, как сделать так, чтобы при scale учитывались границы маски? чтобы картинка не "уплывала" за маску. :o

pic.setMask(mask);
pic.onPress = function () {
var mc = this._parent.mask;
this.startDrag (false, mc._x + mc._width- this._width, mc._y+mc._height-this._height, mc._x,mc._y);
};
pic.onRelease = pic.onReleaseOutside = function () {
this.stopDrag ();
};
_root.x1.onRelease = function() {
_root.onEnterFrame = function() {
pic._xscale += (200-pic._xscale)/2;
pic._yscale += (200-pic._yscale)/2;
};
};
_root.x2.onRelease = function() {
_root.onEnterFrame = function() {
pic._xscale += (300-pic._xscale)/2;
pic._yscale += (300-pic._yscale)/2;
};
};
_root.x3.onRelease = function() {
_root.onEnterFrame = function() {
pic._xscale += (400-pic._xscale)/2;
pic._yscale += (400-pic._yscale)/2;
};
};

Snut
25.02.2007, 19:51
ну как вариант поставить точку привязки в центре, как мне кажется.

Olesolo
25.02.2007, 19:56
но если увеличение сделать в 300%, и перетянуть картинку драгом в правый нижний угол, а потом зумровать на 100%, то уменьшение будет относительно центра картинки, а логически должено быть относительно правого нижнего угла :\

как это сделать я не знаю..

Snut
25.02.2007, 20:48
хм.... косячек, у тЯ картинка динамически создается? если нет - пересоздай картинку и точку привязки поставь посередине, додлжно помочь.

Olesolo
25.02.2007, 21:02
вот. взгляни

Snut
25.02.2007, 22:55
хрен поймешь, попробуй у маски в середину точку привязки сделать. вроде яумится правильно когда у всех точки привязки в центре, но с драгом проблемы.

udaaff
26.02.2007, 03:10
сделай как-нить так, чтобы при уменьшении картинки она не вылазила за границы обозначенные в startDrag() иначе при нажатии она полюбому в заданную область будет перемещаться

Mr. Fixit
26.02.2007, 03:16
2Olesolo: просто добавь вот этот код...

_root.x1.onRelease = function () {
pic._x = 200;
pic._y = 200;
_root.onEnterFrame = function () {
pic._xscale += (200-pic._xscale)/2;
pic._yscale += (200-pic._yscale)/2;
};
};

Olesolo
26.02.2007, 12:10
:)

через ж... немного, но работает :)
спасибо! :)