Простое приложение для перетаскивания, в котором mc перетаскивается из одного родительского mc и перетаскивается в другой родительский mc.
Все работает нормально, пока я не добавлю 2 текстовых поля в mc - одно из них не выбирается для динамического текстового поля.(метка), которая устанавливается кодом, другой - выбираемый вводимый текст, который пользователь может изменить.
Текстовые поля вызывают некоторые проблемы:
- Курсор пальца исчезает, когда пользовательпарит над разделом mc, который содержит текстовые поля (даже текст без возможности выбора ??)
- Когда пользователь пытается перетащить mc путем неосторожного перетаскивания в любом месте в обеих текстовых областях, это вызывает эту ошибку: Ошибка типа: ошибка # 1034: сбой приведения типа: невозможно преобразовать flash.text :: TextField @ 2374a381 в flash.display.MovieClip (одинаковая ошибка для обоих текстовых полей)
- Вводимый текстокно может запутать пользователя - как они иногда нажимают, чтобы перетащить, а иногда нажимают, чтобы изменить?Я думаю, что вводимый текст должен быть «зоной» без перетаскивания мышью в mc.(надеюсь, что это имеет смысл)
Не уверен, но, возможно, мне нужно создать область наложения в пределах mc, которая будет распознаваться при перетаскивании?
Есть ли другие предложения?
Вот соответствующие биты кода:
var itemArray:Array = [
{iname:"police",ititle:"POLICE OFFICER"},
{iname:"insurance_assessor",ititle:"INSURANCE ASSESSOR"},
{iname:"estimator",ititle:"ESTIMATOR"}
];
for (var i:int=0; i < itemArray.length; i++)
{
var itemname:String = itemArray[i].iname;
var curritem:MovieClip = MovieClip(scrollitems.getChildByName(itemname));
if (curritem != null)
{
curritem.ititle.text = itemArray[i].ititle;
curritem.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
curritem.addEventListener(MouseEvent.MOUSE_UP, dropIt);
curritem.buttonMode = true;
}
}
function pickUp(event:MouseEvent):void
{
var dragIt:MovieClip = MovieClip(event.target); //type casting
var dragPoint:Point = dragIt.parent.localToGlobal(new Point(dragIt.x,dragIt.y));
dragIt.parent.removeChild(dragIt); // remove item from current parent mc
stage.addChild(dragIt); //temp add to stage
dragIt.x = dragPoint.x;
dragIt.y = dragPoint.y;
dragIt.startDrag();
}