gnash-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-dev] Weird actionscript bug


From: Udo Giacomozzi
Subject: [Gnash-dev] Weird actionscript bug
Date: Wed, 5 Dec 2007 19:34:42 +0100

I've noticed a weird behaviour of Gnash. Unfortunately it only happens
with a medium sized project (lots of ActionScript) and I could not
isolate the code for a stand alone test case.

Anyway, I'm posting this here in hope someone of you AS guys might
have an idea...


My (selfmade) movie has about 20 identical movieclip instances placed
at design time in _root.


The movieclip definition just contains this code:


---------------8<-----------------------------------------------------

  _parent.munsel_initialize(this);

---------------8<-----------------------------------------------------
  
  

The _root frame where the MCs are placed into has this code:

---------------8<-----------------------------------------------------
  stop();

  munsel_enter();

  function munsel_enter() {
    trace("=== INIT ===");

    _root.munsel_objs = new Array();

    _root.munsel_idx = 0;

  }

  function munsel_initialize(obj) {

    var info;

    trace("munsel_initialize("+obj+")");

    trace("~~~~~ "+_root.munsel_idx+" / 
"+_root.municipalities_special.getCount());

    if (_root.munsel_idx >= _root.municipalities_special.getCount()) {
      obj._visible = false;
      return;
    }

    info = _root.municipalities_special.rowByIndex(_root.munsel_idx);

    _root.munsel_idx++;


    _root.munsel_objs.push(obj);

    //--

    obj._visible = true;
    obj.caption = info.name;
    obj.info = info;

  }
  
---------------8<-----------------------------------------------------


So, this code should initialize all instances in the order they have
been placed on stage and assign values from a list to it.

_root.municipalities_special is a selfmade class instance that loads
data from a CSV file.


Of course this should produce a output similar to this:

---------------8<-----------------------------------------------------
=== INIT ===
munsel_initialize(_level0.instance139)
~~~~~ 0 / 19
munsel_initialize(_level0.instance142)
~~~~~ 1 / 19
munsel_initialize(_level0.instance145)
~~~~~ 2 / 19
---------------8<-----------------------------------------------------

and so on...

However, Gnash says:

---------------8<-----------------------------------------------------
6172] 18:19:58: TRACE: === INIT ===
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance139)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance142)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance145)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance148)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance151)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance154)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance157)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance160)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance163)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance166)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance169)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance172)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance175)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance178)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance181)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance184)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance187)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance190)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance193)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance196)
6172] 18:19:58: TRACE: munsel_initialize(_level0.instance199)
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
6172] 18:19:58: TRACE: ~~~~~ 0 / 19
---------------8<-----------------------------------------------------


So it seems the AS code execution order is mixed up somehow...

Interesting enough, the movieclip instances get initialized correctly
(all have different "captions").

Removing the trace() calls leads to wrong captions (all have same
values IIRC), however.


I'd like to give you a self contained testcase, but unfortunately I
can't reproduce the problem in a simple SWF file.


Target SWF version is 6, Gnash built from CVS 2007-12-05 17:14.

Udo





reply via email to

[Prev in Thread] Current Thread [Next in Thread]