Flash AS3 - Изменение размера спрайта влияет на textifeld?

Борьба с простым. У меня есть спрайт и текстовое поле. Ни один из них не добавляется как дочерний элемент друг друга, они являются отдельными объектами. Класс показан ниже полностью. Все работает, как и ожидалось, однако, когда я вызываю функцию simpleGUIElementResize для изменения размера спрайта, текстовое поле также изменяет размер, чего я не хочу. В результате я могу делать все, что захочу, а текст остается там, где он есть.

Любые идеи?

Спасибо.

package com.simpleGUI {
    //flash imports
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.text.TextFormatAlign;
    import flash.text.Font;

//greensock
import com.greensock.TweenMax;
import com.greensock.easing.*;


public class simpleGUIElement extends Sprite {
    //declaration vars
    private var sgeWidth:int;
    private var sgeHeight:int;
    private var sgeColour:String;
    private var sgeText:String;

    //internal vars
    private var sgeSprite:Sprite = new Sprite();
    private var sgeTextField:TextField = new TextField();
    private var sgeFormat:TextFormat = new TextFormat();

    //formatting vars
    private var sgeTextSize:int;

    public function simpleGUIElement(SGEWIDTH:int, SGEHEIGHT:int, SGECOLOUR:String, SGETEXT:String, SGETEXTSIZE:int) {
        trace('simpleGUIElement created');

        //populate the vars
        sgeWidth = SGEWIDTH;
        sgeHeight = SGEHEIGHT;
        sgeColour = SGECOLOUR;
        sgeText = SGETEXT;

        sgeTextSize = SGETEXTSIZE;

        createSprite();  //create the rectangle

        //if the text string is not null create the textfield
        if (sgeText.indexOf("null") >= 0) {
            return;
        } else {
            createTextField();
        }

    }

    private function createSprite():void {
        //create the sprite
        sgeSprite.graphics.beginFill(uint(sgeColour));
        sgeSprite.graphics.drawRect(0, 0, sgeWidth, sgeHeight);
        sgeSprite.graphics.endFill();
        //add the sprite
        addChild(sgeSprite);
    }

    private function createTextField():void {
        //sort of the formatting
        sgeFormat.size = sgeTextSize;
        sgeFormat.align = TextFormatAlign.LEFT;
        sgeFormat.font = 'Arial';
        sgeFormat.color = (0xffffff);
        sgeFormat.leading = 5;
        sgeFormat.kerning = 10;
        sgeFormat.letterSpacing = 0.7;

        //create the textfield
        sgeTextField.defaultTextFormat = sgeFormat;
        sgeTextField.htmlText = sgeText;
        sgeTextField.width = sgeWidth;
        sgeTextField.height = sgeHeight - 20;
        sgeTextField.wordWrap = true;
        sgeTextField.selectable = false;
        sgeTextField.x = 10;
        sgeTextField.y = 10;
        sgeTextField.mouseEnabled = false;
        addChild(sgeTextField);
    }


    public function simpleGUIElementResize(animTime:int, newWidth:int, newHeight:int):void {
        TweenMax.to(sgeSprite, animTime, {width:newWidth, height:newHeight});
    }

}

}


person mrEmpty    schedule 02.08.2012    source источник


Ответы (1)


Извините, но ваш код работает.
Живая демонстрация здесь (нажмите на сцену, чтобы изменить размер).

person Florent    schedule 02.08.2012
comment
Да нет смысла, это только в одном проекте. Это сбивает меня с толку. - person mrEmpty; 02.08.2012
comment
Ваша проблема в другом. - person Florent; 02.08.2012
comment
Казалось, что-то не так с флай, создал совершенно новый проект и проблема исчезла. - person mrEmpty; 06.08.2012