Вход

Просмотр полной версии : button mode cursor hand над TextField


Killer_13
08.12.2009, 00:23
Здравствуйте..
Пишу лейбл(название кнопки) с помощью TextField
но при наведении на TextField курсор не меняется, подскажите как поменять курсор при наведении на TextField.

спасибо.

Вот код как я делаю

Main.as
package {

import flash.display.*;
import flash.events.*;
import buttons;

public class Main extends Sprite{

public var cButt:Sprite = new Sprite();

public function Main(){

this.addChild(cDrop);
cDrop.addChild(dro);

if(stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}

private function init(e:Event = null):void {

removeEventListener(Event.ADDED_TO_STAGE, init);

this.addChild(cButt);
cButt.buttonMode = true;
cButt.useHandCursor = true;

var btn1:buttons = new buttons("Back");
btn1.x = 10;
btn1.y = 320;

btn1.addEventListener(MouseEvent.MOUSE_DOWN, b.b_back);

var btn2:buttons = new buttons("Next");
btn2.x = 388;
btn2.y = 320;
btn2.addEventListener(MouseEvent.MOUSE_DOWN, b.b_next);


cButt.addChild(btn1);
cButt.addChild(btn2);

}
}
}
Buttons.as

package{

import flash.display.*;
import flash.events.MouseEvent;
import flash.geom.*;
import flash.text.TextField;

public class buttons extends Sprite {

private var labelFld:TextField;

public function buttons (labelText:String) {

labelFld = new TextField;
labelFld.selectable = false;
labelFld.textColor = 0xFFFFFF;
labelFld.width = 30;
labelFld.height = 18;
labelFld.x = 27;
labelFld.y = 2;
labelFld.text = labelText;
addChild(labelFld);


addEventListener(MouseEvent.ROLL_OVER, onOver);
addEventListener(MouseEvent.ROLL_OUT, onOut);
onOut(null);
}
}
}

Dimax4d
08.12.2009, 02:07
cButt.mouseChildren = false;

Killer_13
08.12.2009, 02:26
работает, но пропало свойство при наведении мышью, тоисть курсор рука появляется на всей области кнопки, но она например не меняет цвет при наведении, как это должно быть...

Dimax4d
08.12.2009, 02:35
Можно создать для каждой кнопки отдельный контейнер и подписать его на события наведения мыши

Killer_13
08.12.2009, 02:38
А по другому никак? У меня просто 3 кнопки будет, я их хотел всех в один контейнер загружать.
Все таки нужно еще создавать контейнеры для каждой кнопки отдельно, тогда должно работать?

Dimax4d
08.12.2009, 02:43
Вообще говоря, у вас уже есть контейнер - это ваш

public class buttons extends Sprite {

для него ставите

super.buttonMode = true;
super.useHandCursor = true;
super.mouseChildren = false;


И экземпляры этого класса подписываете на события, прямо как у вас и есть сейчас


package{

import flash.display.*;
import flash.events.MouseEvent;
import flash.geom.*;
import flash.text.TextField;

public class buttons extends Sprite {

private var labelFld:TextField;

public function buttons (labelText:String) {


super.buttonMode = true;
super.useHandCursor = true;
super.mouseChildren = false;

labelFld = new TextField;
labelFld.selectable = false;
labelFld.textColor = 0xFFFFFF;
labelFld.width = 30;
labelFld.height = 18;
labelFld.x = 27;
labelFld.y = 2;
labelFld.text = labelText;
addChild(labelFld);


addEventListener(MouseEvent.ROLL_OVER, onOver);
addEventListener(MouseEvent.ROLL_OUT, onOut);
onOut(null);
}
}
}

Killer_13
08.12.2009, 03:00
Все работает!!! Ура!
Вопрос решен.
Тему можно закрывать.