Просмотр полной версии : Переместить объект на передний план!
zomkoner
20.03.2013, 21:38
Всем доброго времени суток! Перейду сразу к сути:
Имеется Sprite, при нажатии начинается перетаскивание его! Но нужно спрайт который перетаскиваем переместить на передний план!
public function func_e_Down(e:MouseEvent):void{
priv_starting_spr = new Point(e.target.x, e.target.y);
e.target.startDrag();
e.target.filters = [new DropShadowFilter()];
setChildIndex(DisplayObject(e.target), numChildren-1);
}
Привет! Перемещай на передний план так!
(e.target as DisplayObject).parent.addChild(e.target);
Или так!
stage.addChild(e.target);
zomkoner
20.03.2013, 21:48
bav Спасибо, но меня интересует именно метод setChildIndex.
Добавлено через 13 минут
Да и при использовании :
(e.target as DisplayObject).parent.addChild(e.target);
Или так:
stage.addChild(e.target);
Тоже выдает ошибку!
Потому что надо привести к DisplayObject'у
addChild(e.target as DisplayObject);
он перебросит данный объект на самый вверх без обращения к numChildren
(e.target as DisplayObject).parent.addChild(e.target); Ну это конечно жестакч! Зачем учить такому людей? По поводу setChildIndex - в чем проблема? Метод простой, работает всегда
zomkoner
20.03.2013, 23:21
Потому что надо привести к DisplayObject'у
addChild(e.target as DisplayObject);
он перебросит данный объект на самый вверх без обращения к numChildren
Это конечно работает, но ошибку в flash builder на это строке выдает:
Это строка содержит несколько выделений:
-1118: Неявное исправление значения статического типа Object на возможный несвязанный тип
flash.display:DisplayObject.
-1120: Обращение несуществующего свойства DisplayObject.
Меня смущает что справа весит это крестик. Почему ошибку выдает а метод работает?
Добавлено через 5 минут
Ну это конечно жестакч! Зачем учить такому людей? По поводу setChildIndex - в чем проблема? Метод простой, работает всегда
Проблема в том что он не работает, если addChild работает но выдает ошибку, то:
setChildIndex(e.target,numChildren -1);
// или
setShildIndex(DisplayObject(e.target), numChildren-1);
и не работает и выдает ошибку!
1180: Вызов предположительно неопределенного метода DisplayObject.
импортните, наконец, DisplayObject
zomkoner
20.03.2013, 23:31
заработало вот так: setChildIndex(e.target as DisplayObject, numChildren -1);
Всем спасибо большое! Я наверно где отпечатался, т.к. удалил всё скомпилировал, написал заново и все нормально...
))) тема закрыта! всем большое спасибо ещё раз!
Добавлено через 1 минуту
импортните, наконец, DisplayObject
да у меня он был импортирован, иначе бы у меня ничего бы не работало!
UserSuperPupsik
21.08.2013, 21:21
Извините за некропостинг, но думаю это лучше, чем дубликат темы.Помогите решить проблему.
Дан код, рисующий круг.
var circle:Sprite = new Sprite();
import flash.utils.Dictionary;
import flash.display.DisplayObject;
circle.graphics.lineStyle(1, 0x000000);
circle.graphics.beginFill(0x0000FF, 0.5);
circle.graphics.drawCircle(0, 0, 40);
circle.x=100
circle.y=111
И дан код, добавляющий 2 объекта на сцену.
var a2:S3=new S3();
a2.x=200;
a2.y=200;
addChild(a2);
var a1:S3=new S3();
a1.x=200;
a1.y=300;
addChild(a1);
Что написать, чтобы объекты были на разных планах: circle был на 1-ом плане, a1 на 2-ом плане, a2 на 3-м плане?
Akopalipsis
21.08.2013, 21:36
Вот тут есть ответы на все Ваши вопросы. я не хочу сказать, что Вам не хочу помогать, я наоборот пытаюсь вам помочь! Вот если Вы после прочтения не поймёте, тогда скажите об этом. Выставите в настройках сайта последнею версию плеера и последнею версию cc. И обратите внимание на вот такую вкладку, её нужно открывать.
Общедоступные методы
Показать унаследованные общедоступные методы
http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/display/DisplayObjectContainer.html#methodSummary
Aquahawk
21.08.2013, 21:51
вот за это
stage.addChild(e.target);
руки бы оторвал
UserSuperPupsik
22.08.2013, 18:01
Спасибо, akopalipsis, http://help.adobe.com/ru_RU/FlashPla...#methodSummary.
Почитал, очень помогло, здесь даже примерчики были.
Что написать, чтобы объекты были на разных планах: circle был на 1-ом плане, a1 на 2-ом плане, a2 на 3-м плане?
Вот, что получилось:
var container1:Sprite=new Sprite;//создать контейнер container1 для хранения кругов
var circle1:Sprite = new Sprite();//нарисовать круг 1 (circle1)
circle1.graphics.lineStyle(1, 0x000000);
circle1.graphics.beginFill(0x0000cc, 1);
circle1.graphics.drawCircle(0, 0, 40);
circle1.y=80;
circle1.x=170;
var circle2:Sprite = new Sprite();//нарисовать круг 2 (circle2)
circle2.graphics.lineStyle(1, 0x000000);
circle2.graphics.beginFill(0x33cc00, 1);
circle2.graphics.drawCircle(0, 0, 40);
circle2.y=95;
circle2.x=184;
var circle3:Sprite = new Sprite();//нарисовать круг 3 (circle3)
circle3.graphics.lineStyle(1, 0x000000);
circle3.graphics.beginFill(0xffff99, 1);
circle3.graphics.drawCircle(0, 0, 40);
circle3.y=122;
circle3.x=180;
var circle4:Sprite = new Sprite();//нарисовать круг 4 (circle4)
circle4.graphics.lineStyle(1, 0x000000);
circle4.graphics.beginFill(0xff9933, 1);
circle4.graphics.drawCircle(0, 0, 40);
circle4.y=145;
circle4.x=188;
container1.addChild(circle1);//поместить circle1 в container1
container1.addChild(circle2);//поместить circle2 в container1
container1.addChild(circle3);//поместить circle3 в container1
container1.addChild(circle4);//поместить circle4 в container1
addChild(container1);// поместить все объекты контейнера на сцену
//container2.addChild(container1);
//addChild(container2);
trace("container1.getChildIndex(circle):",container1.getChildIndex(circle1));//показать на каком плане объект(если число большое,то объект близко расположен от наблюдателя)
container1.setChildIndex(circle1,(container1.numChildren-1)); //переместить circle1 на передний план.
trace("container1.getChildIndex(circle):",container1.getChildIndex(circle1));//показать на каком плане объект
trace("container1.numChildren:",container1.numChildren);//показать количество планов(количество объектов) для container1
Добавлено через 22 минуты
Ребят, вот проблема: не могу с помощью setChildIndex изменить индекс e.target 'a по нажатии на него левой клавиши мыши(событие).Вот мой код, что здесь нужно исправить?
import flash.events.MouseEvent;
var i:int=1
addEventListener(MouseEvent.CLICK,funct);
function funct(e:MouseEvent):void
{
if(i==1) {
e.target.startDrag();
trace(e.target.name,"has been taken");
i=2;
}
else if (i==2){
e.target.stopDrag();
trace(e.target.name, "has been dropped");
i=1;
//e.target.x=100
//e.target.y=100
}
}
Уточню: как, применить этот метод container1.setChildIndex(circle1,(container1.numChildren-1)); к вот этому самому e.target?
Добавлено через 58 минут
Всё, разобрался, благодарю всех участников, вот как должно быть:
import flash.events.MouseEvent;
var i:int=1
addEventListener(MouseEvent.CLICK,funct);
function funct(e:MouseEvent):void
{
if(i==1) {
container1.setChildIndex(e.target as DisplayObject,(container1.numChildren -1));
e.target.startDrag();
trace(e.target.name,"has been taken");
i=2;
}
else if (i==2){
e.target.stopDrag();
trace(e.target.name, "has been dropped");
i=1;
//e.target.x=100
//e.target.y=100
}
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.