Как бы я дал кнопкам в этой галерее изображений эффект ролловера, а также назначил каждому из них отдельные ярлыки? - PullRequest
1 голос
/ 14 сентября 2009

Поэтому я пытаюсь сделать так, чтобы эти «Кнопки» в моей галерее изображений имели эффект прокрутки (изменение цвета текста), и вместо слов «Линус0», «Линус1», «Линус2» я бы хотел назначить у каждого свой лейбл. Могу ли я сделать это с массивом? Кроме того - что я делаю неправильно, заставляя меня думать, что всего шесть изображений? Там всего 5, а мне нужно всего 5 кнопок. Заранее спасибо! Вот мой код:

var myPics:Array = new Array ("image0", "image1", "image2", "image3", "image4");

var totalItems: int = myPics.length;



function createLabels () : void {
for (var i:int=0; i<=totalItems; i++){
    var btn_label:TextField = new TextField ();
    this.addChild (btn_label);
    btn_label.name = "image"+i;

    var format:TextFormat = new TextFormat ();
    format.font = "Verdana";
    format.color = 0x000000;
    format.size = 12;


    btn_label.defaultTextFormat = format;

    btn_label.x = 55;
    btn_label.y = 50+ (i*20);

    btn_label.text = "Linus"+i;
}
};

function makeMenu ():void {
for (var i:int=0; i<=totalItems; i++) {
    var myBtn:button = new button;
    this.addChild (myBtn);
    myBtn.name = "image"+i;


    myBtn.x = 55;
    myBtn.y = 50+ (i*20);
    myBtn.addEventListener(MouseEvent.CLICK, btnPress);
    myBtn.addEventListener(MouseEvent.CLICK, btnPress);
trace(i);

    }
};

    createLabels ();
    makeMenu ();

    var myFrame: frame = new frame;
    this.addChild (myFrame);
    myFrame.name = "frame";
    myFrame.x = 200;
    myFrame.y = 70;

    var myLoader:Loader = new Loader ();

    function btnPress (event:MouseEvent):void{
        this.enabled = true;
        myLoader.load (new URLRequest("images/"+event.target.name+".jpg"));
        addChild(myLoader);
        myLoader.x = 201;
        myLoader.y = 71;
    };

Ответы [ 2 ]

2 голосов
/ 14 сентября 2009

причина, по которой вы получаете 6 вместо 5, состоит в том, что вы используете <= вместо <. Поскольку «i» начинается с 0, это означает, что цикл насчитывает 6 раз. </p>

Что касается эффекта ролловера, если вы хотите изменить только цвет текста, то это должно сделать:

btn_label.addEventListener(MouseEvent.MOUSE_OVER, labelOver);


function labelOver(e:MouseEvent):void
{
    e.target.defaultTextFormat.color = 0xFF0000;
    e.target.defaultTextFormat = format;
    btn_label.addEventListener(MouseEvent.MOUSE_OUT, labelOut);
}

function labelOut(e:MouseEvent):void
{
    e.target.defaultTextFormat.color = 0x000000;
    e.target.defaultTextFormat = format;
    btn_label.removeEventListener(MouseEvent.MOUSE_OUT, labelOut);
}
0 голосов
/ 02 февраля 2010

+ 1, что сказал Оливер

как для этого

также вместо того, чтобы говорить "Linus0", "Linus1", "Linus2", я хотел бы назначить каждому свой собственный ярлык. Могу ли я сделать это с массивом?

да, вы можете определить массив строк, содержащих допустимые имена, а затем заполнить их ярлыками кнопок.

...