PDA

Просмотр полной версии : Удаление объекта


olejan1991
01.04.2013, 20:21
Вопрос в комментариях в классе button

Основной класс
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;

import map.Button;

public class VirtualMap4 extends Sprite
{

private var cell:Sprite;
private var button:Button = new Button();

public function VirtualMap4()
{
displayCell();
displayButton();
}

// Отображаем квадрат
public function displayCell():void
{
cell = new Sprite();
var x:uint = 4;
var y:uint = 4;
cell.graphics.lineStyle(1, 0x000000);
cell.graphics.drawRect(x, y, 100, 100);
addChild(cell);
}

// Отображаем кнопку
public function displayButton():void
{
button.displayButton();
addChild(button);
}




}
}


класс кнопки
package map
{
import flash.display.Sprite;
import flash.events.MouseEvent;

public class Button extends Sprite
{
private var button:Sprite;

public function Button()
{
super();
}

public function displayButton():void
{
button = new Sprite();
var x:uint = 4;
var y:uint = 110;
button.graphics.beginFill(0xFFFFFF, 1.0);
button.graphics.lineStyle(1, 0x000000);
button.graphics.drawRect(x, y, 20, 20);
button.buttonMode = true;
addChild(button);
//вешаем событие на кнопку
button.addEventListener(MouseEvent.CLICK, buttonAction);
}

//слушатель события
public function buttonAction(e:MouseEvent):void
{
trace("remove");
//как при клике удалить квадрат со сцены?
removeChild();
}
}
}
Если это делать в основном классе - все понятно, а вот если операция удаления должна происходить в другом классе - я в тупике.

gagaga
01.04.2013, 21:10
событие посылайте да и всё

olejan1991
01.04.2013, 21:25
ответ не понятен

caseyryan
01.04.2013, 21:29
ответ не понятен
Собственно, как и вопрос.

GBee
01.04.2013, 22:26
public function displayButton():void
{
button.displayButton();
addChild(button);
button.addEventListener(MouseEvent.CLICK, buttonAction);
}

public function buttonAction(e:MouseEvent):void
{
trace("remove");
removeChild(button);
}

Или из самой кнопки

parent.removeChild(this);

olejan1991
01.04.2013, 22:52
так удаляется кнопка, а нужно удалять большой квадрат

GBee
02.04.2013, 00:46
а! тогда невыполнимо.

olejan1991
02.04.2013, 00:58
тогда не могу понять как же удалить этот объект?

GBee
02.04.2013, 01:05
olejan1991, шучу я, можно конечно. Ну подумайте головой. Просто не до всех доходит , что для вас БОЛЬШОЙ КВАДРАТ. Если вы хотите удалить cell, то в классе кнопки этого точно делать не стоит. Сделайте в майне подпись на клик кнопки и по клику удаляйте.

public function displayButton():void
{
button.displayButton();
addChild(button);
button.addEventListener(MouseEvent.CLICK, buttonAction);
}

public function buttonAction(e:MouseEvent):void
{
trace("remove");
removeChild(cell);
}

olejan1991
02.04.2013, 02:11
оно та все красиво звучит, но вот как в майне подписаться на событие, которое происходит в классе button?

GBee
02.04.2013, 16:10
я вам написал выше.