AS3对象在1.5-2分钟后莫名其妙地消失

时间:2012-05-08 18:02:20

标签: actionscript-3

我是as3的新手但是我一直在学习。 我正在创建一个带有文本字段输入的容器,以便用户可以创建“帖子”。当从舞台中移除动画时,会触发此动作,当动画完成时会自动执行动画。

然而,大约1.5-2分钟后,容器莫名其妙地消失了。这是一个问题,因为用户可能希望花费超过2分钟来发布帖子。 我不能为我的生活弄清楚为什么会发生这种情况,是否可能是垃圾收集问题?

非常感谢任何帮助,谢谢,

var titleText:Title = new Title();
var titleInput:TextField = new TextField();

var categoryText:Category = new Category();
var categoryInput:TextField = new TextField();

var postText:Text = new Text();
var postInput:TextField = new TextField();

//setup text formats to be used
var postCreationTextFormat:TextFormat = new TextFormat();

postCreationTextFormat.font = "arial";
postCreationTextFormat.size = 20;
postCreationTextFormat.align = "left";
postCreationTextFormat.leftMargin = 2;


//Fade In Post Creation Box after Seed to Bud Animation.
seedToBud.addEventListener(Event.REMOVED_FROM_STAGE, createPostInput);

//Some variables to declare for the createPostInput function.
var postCreationContainer:PostCreationContainer = new PostCreationContainer;
var contentWindow:ContentWindow = new ContentWindow;
var postCreationInputBoxes:PostCreationInputBoxes = new PostCreationInputBoxes;
var thumb:Thumb = new Thumb;
var track:Track = new Track;
var scrollDownArrow:ScrollDownArrow = new ScrollDownArrow;
var scrollUpArrow:ScrollUpArrow = new ScrollUpArrow;

function createPostInput(event:Event)
{
    addChild(postCreationContainer);    
    postCreationContainer.x = 230;
    postCreationContainer.y = 400;

    postCreationContainer.addChild(track);
    track.x = 428;
    track.y = 25;

    postCreationContainer.addChild(thumb);
    thumb.x = 418;
    thumb.y = 25;

    postCreationContainer.addChild(scrollDownArrow);
    scrollDownArrow.x = 418;
    scrollDownArrow.y = 269;

    postCreationContainer.addChild(scrollUpArrow);
    scrollUpArrow.x = 418;
    scrollUpArrow.y = 6;

    postCreationContainer.addChild(contentWindow);
    contentWindow.x = 6;
    contentWindow.y = 6;

    postCreationContainer.addChild(postCreationInputBoxes);
    postCreationInputBoxes.x = 6;
    postCreationInputBoxes.y = 6;

    postCreationContainer.alpha = 0;
    postCreationContainer.addEventListener(Event.ENTER_FRAME, fadeInCreatePostInput);

    postCreationInputBoxes.addChild(titleText);
    titleText.x = 0;
    titleText.y = 0;

    postCreationInputBoxes.addChild(titleInput);

    postCreationInputBoxes.addChild(categoryText);
    categoryText.x = 0;
    categoryText.y = 60;

    postCreationInputBoxes.addChild(categoryInput);

    postCreationInputBoxes.addChild(postText);
    postText.x = 0;
    postText.y = 124;

    postCreationInputBoxes.addChild(postInput); 

    titleInput.defaultTextFormat = postCreationTextFormat;
    titleInput.type = "input";
    titleInput.multiline = false;
    titleInput.wordWrap = false;
    titleInput.maxChars = 150;
    titleInput.border = true;
    titleInput.width = 403;
    titleInput.height = 30;
    titleInput.x = 0;
    titleInput.y = 32;
    titleInput.background = true;
    titleInput.backgroundColor = 0xFFFFFF;

    categoryInput.defaultTextFormat = postCreationTextFormat;
    categoryInput.type = "input";
    categoryInput.multiline = false;
    categoryInput.wordWrap = false;
    categoryInput.maxChars = 150;
    categoryInput.border = true;
    categoryInput.width = 403;
    categoryInput.height = 30;
    categoryInput.x = 0;
    categoryInput.y = 96;
    categoryInput.background = true;
    categoryInput.backgroundColor = 0xFFFFFF;

    postInput.defaultTextFormat = postCreationTextFormat;
    postInput.type = "input";
    postInput.multiline = true;
    postInput.wordWrap = true;
    postInput.maxChars = 500;
    postInput.border = true;
    postInput.width = 403;
    postInput.height = 361.5;
    postInput.x = 0;
    postInput.y = 156;
    postInput.background = true;
    postInput.backgroundColor = 0xFFFFFF;

    stage.focus = titleInput;
    seedToBud.removeEventListener(Event.REMOVED_FROM_STAGE, createPostInput);
}

function fadeInCreatePostInput(event:Event):void
{
    postCreationContainer.alpha += 0.05;
    if (postCreationContainer.alpha == 1)
    {
        postCreationContainer.removeEventListener(Event.ENTER_FRAME, fadeInCreatePostInput);
    }
}

1 个答案:

答案 0 :(得分:0)

您是否知道您的alpha增量器没有舍入问题?我要检查alpha的整数值而不是实际的浮点值。或者,对于一些小的FUZZ值进行模糊比较(α> = 1-FUZZ&& alpha< = 1 + FUZZ)。