У меня есть экран паузы, который добавляется, когда вы нажимаете кнопку паузы внутри моей текущей игры.Как только это вызывается, класс PausePanel включается и добавляет «представление» к себе на сцену (это отдельный фрагмент ролика с именем PauseScreenView, который содержит все кнопки, ползунки и т. Д., В которых он мне нужен).В этой панели паузы я пытаюсь настроить пользовательский слайдер, чтобы я мог контролировать громкость.Прямо сейчас я игнорирую весь объем и просто пытаюсь заставить его отображать некоторый текст в динамическом текстовом окне на той же панели паузы.Сейчас у меня все настроено и работает, однако есть проблема.Я могу только «захватить» ползунковую ручку (называемую volKnob), когда она находится на дальних концах своего диапазона.И что еще хуже, я не могу взять его из любой точки графического фрагмента ролика, за исключением левого края, когда он находится с левой стороны своего диапазона, и правого края, когда он находится с правой стороны своего диапазона.Также, если я отпущу это, пока не на дальнем краю, тогда я вообще не смогу схватить его.Я уже настраивал другие драг, и один даже находится в другом месте этой игры.Все они работают нормально, и я могу захватить объект из любого места, где я хочу, по краям графика.Но на этой странице я не могу понять, за исключением краев.Сейчас я впервые пытаюсь установить ограничение на его диапазон, но если я уберу этот бит, он все равно не позволит мне взять его из любого места.Вот код PausePanel.as:
package {
import flash.events.Event;
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
public class PausePanel extends MovieClip {
public var viewPause:PauseScreenView;
private var boundsRect:Rectangle;
public function PausePanel():void {
addEventListener(Event.ADDED_TO_STAGE, addedToStage);
}
private function addedToStage(e:Event):void {
removeEventListener(Event.ADDED_TO_STAGE, addedToStage);
//add the graphics
viewPause = addChild(new PauseScreenView()) as PauseScreenView;
//set up variables
boundsRect = new Rectangle(60, 185, 360, 0);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
viewPause.Knob.addEventListener(MouseEvent.MOUSE_DOWN, startDragging);
}
private function onEnterFrame(event:Event):void {
sliderValue = viewPause.Knob.x / 3;
viewPause.status_txt.text = "Slider position is: " + sliderValue;
}
private function startDragging(event:MouseEvent):void {
var currentDragObject:MovieClip = event.currentTarget as MovieClip;
currentDragObject.startDrag(true, boundsRect);
currentDragObject.addEventListener(MouseEvent.MOUSE_UP, stopDragging);
}
private function stopDragging(event:MouseEvent):void {
var currentDragObject:MovieClip = event.currentTarget as MovieClip;
currentDragObject.stopDrag();
currentDragObject.removeEventListener(MouseEvent.MOUSE_UP, stopDragging);
}
}
}
Есть ли что-то, что кто-то видит, где я что-то пропустил или настроил что-то неправильно?Я перепробовал несколько разных вещей, и все они работали одинаково испорченным способом.Есть идеи?
ОБНОВЛЕНО:
ОК. Я вынул этот код и сделал его классом конструктора для пустого fla с помощью только ручки и текстового окна.Как только я вынул раздел viewPause, он работает отлично.Он тянет так же, как вы думаете.Проблема возникает с тем фактом, что ручка является дочерним элементом viewPause, кажется?Есть ли какая-то особая хитрость, чтобы заставить перетаскивать работать, когда объект перетаскивания является подобъектом другого, кроме того, как я показываю его в коде (т.е. viewPause.Knob) ??