У меня есть этот набор кодов для создания простого до и после средства отображения изображений:
import com.greensock.*;
import com.greensock.easing.*;
function init() : void {
sliderbar_mc.buttonMode = true;
sliderbar_mc.addEventListener(MouseEvent.MOUSE_DOWN,moveSliderbar);
stage.addEventListener(MouseEvent.MOUSE_UP,stopSliderbar);
mask_mc.alpha = 0;
after_mc.mask = mask_mc;
TweenLite.to(sliderbar_mc,4,{x:stage.stageWidth/2,ease:Elastic.easeOut});
TweenLite.to(mask_mc,4,{x:stage.stageWidth/2,ease:Elastic.easeOut});
}
function moveSliderbar(event:MouseEvent):void {
stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);
}
function stopSliderbar(event:MouseEvent):void{
stage.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);
}
function mouseMoveHandler(event:MouseEvent):void{
sliderbar_mc.x = mouseX;
if (sliderbar_mc.x > stage.stageWidth){
sliderbar_mc.x = stage.stageWidth;
}
else if(sliderbar_mc.x < 0){
sliderbar_mc.x = 0;
}
mask_mc.x = sliderbar_mc.x;
}
init();
Но теперь мне нужно поместить область откровения в отдельный фрагмент ролика где-нибудь на сцене, для жизни я не могу понять, как использовать globalToLocal для этой работы ... Вот моя попытка:
import com.greensock.*;
import com.greensock.easing.*;
function init():void {
area_mc.sliderbar_mc.buttonMode = true;
area_mc.sliderbar_mc.addEventListener(MouseEvent.MOUSE_DOWN,moveSliderbar);
stage.addEventListener(MouseEvent.MOUSE_UP,stopSliderbar);
area_mc.mask_mc.alpha = 0;
area_mc.after_mc.mask = area_mc.mask_mc;
TweenLite.to(area_mc.sliderbar_mc,3,{x:stage.stageWidth/2,ease:Elastic.easeOut});
TweenLite.to(area_mc.mask_mc,3,{x:stage.stageWidth/2,ease:Elastic.easeOut});
}
function moveSliderbar(event:MouseEvent):void {
stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);
}
function stopSliderbar(event:MouseEvent):void {
stage.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);
}
function mouseMoveHandler(event:MouseEvent):void {
var topLeft:Point = area_mc.localToGlobal(new Point(0, 0));
var bottomRight:Point = area_mc.localToGlobal(new Point(width, height));
area_mc.sliderbar_mc.x = area_mc.mouseX;
if (area_mc.mouseX > topLeft.x) {
area_mc.sliderbar_mc.x = topLeft.x;
}
else if(area_mc.mouseX < bottomRight.x){
area_mc.sliderbar_mc.x = bottomRight.x;
}
area_mc.mask_mc.x = area_mc.sliderbar_mc.x;
}
init();
Очевидно, что это не работает должным образом, я знаю, что это все в функции mouseMoveHandler, может кто-нибудь дать мне несколько советов?