Benjamin Otte
2007-Jun-15 22:21 UTC
[Swfdec] Branch 'as' - 2 commits - libswfdec/swfdec_as_strings.c libswfdec/swfdec_sprite_movie_as.c test/trace
libswfdec/swfdec_as_strings.c | 1 + libswfdec/swfdec_sprite_movie_as.c | 22 ++++++++++++++++++++++ test/trace/Makefile.am | 7 +++++++ test/trace/level-property-5.swf |binary test/trace/level-property-5.swf.trace | 8 ++++++++ test/trace/level-property-6.swf |binary test/trace/level-property-6.swf.trace | 8 ++++++++ test/trace/level-property-7.swf |binary test/trace/level-property-7.swf.trace | 8 ++++++++ test/trace/level-property.as | 18 ++++++++++++++++++ 10 files changed, 72 insertions(+) New commits: diff-tree 987074e275ac77f8799e5fdf41890e8ef126b291 (from a5f1d561b1a24c77ba879af7d004729f6b0e7224) Author: Benjamin Otte <otte at gnome.org> Date: Fri Jun 15 23:34:56 2007 +0200 add a test that tests _level0 diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am index 5adb037..9c66cbc 100644 --- a/test/trace/Makefile.am +++ b/test/trace/Makefile.am @@ -271,6 +271,13 @@ EXTRA_DIST = \ jump-out-of-with.as \ jump-out-of-with.swf \ jump-out-of-with.swf.trace \ + level-property.as \ + level-property-5.swf \ + level-property-5.swf.trace \ + level-property-6.swf \ + level-property-6.swf.trace \ + level-property-7.swf \ + level-property-7.swf.trace \ lifetime1.swf \ lifetime1.swf.trace \ load-4.swf \ diff --git a/test/trace/level-property-5.swf b/test/trace/level-property-5.swf new file mode 100644 index 0000000..a00b2cb Binary files /dev/null and b/test/trace/level-property-5.swf differ diff --git a/test/trace/level-property-5.swf.trace b/test/trace/level-property-5.swf.trace new file mode 100644 index 0000000..d7155ea --- /dev/null +++ b/test/trace/level-property-5.swf.trace @@ -0,0 +1,8 @@ +_level0 +hi +_level0 +_level0 +hi +_level0 +_level0 +undefined diff --git a/test/trace/level-property-6.swf b/test/trace/level-property-6.swf new file mode 100644 index 0000000..63aece7 Binary files /dev/null and b/test/trace/level-property-6.swf differ diff --git a/test/trace/level-property-6.swf.trace b/test/trace/level-property-6.swf.trace new file mode 100644 index 0000000..aa07ec5 --- /dev/null +++ b/test/trace/level-property-6.swf.trace @@ -0,0 +1,8 @@ +_level0 +hi +_level0 +_level0 +hi +_level0 +_level0 +_level0._level0 diff --git a/test/trace/level-property-7.swf b/test/trace/level-property-7.swf new file mode 100644 index 0000000..c6496e4 Binary files /dev/null and b/test/trace/level-property-7.swf differ diff --git a/test/trace/level-property-7.swf.trace b/test/trace/level-property-7.swf.trace new file mode 100644 index 0000000..aa07ec5 --- /dev/null +++ b/test/trace/level-property-7.swf.trace @@ -0,0 +1,8 @@ +_level0 +hi +_level0 +_level0 +hi +_level0 +_level0 +_level0._level0 diff --git a/test/trace/level-property.as b/test/trace/level-property.as new file mode 100644 index 0000000..d081665 --- /dev/null +++ b/test/trace/level-property.as @@ -0,0 +1,18 @@ +// makeswf -v 7 -s 200x150 -r 1 -o level-property.swf level-property.as + +trace (_level0); +_level0 = "hi"; +trace (_level0); +delete _level0; +trace (_level0); +_global._level0 = "hi"; +trace (_level0); +this._level0 = "hi"; +trace (_level0); +delete this._level0; +trace (_level0); +x = createEmptyMovieClip ("_level0", 0); +trace (_level0); +trace (x); + +loadMovie ("FSCommand:quit", ""); diff-tree a5f1d561b1a24c77ba879af7d004729f6b0e7224 (from 51bdd4e30a331ac9d4c21748097323187eed89f9) Author: Benjamin Otte <otte at gnome.org> Date: Fri Jun 15 23:33:52 2007 +0200 implement createEmptyMovieClip () No idea how perfect it works, but it's good enough for the tests I'm about to commit. And it's only 12 loc. :) diff --git a/libswfdec/swfdec_as_strings.c b/libswfdec/swfdec_as_strings.c index c4428cb..938d43a 100644 --- a/libswfdec/swfdec_as_strings.c +++ b/libswfdec/swfdec_as_strings.c @@ -207,6 +207,7 @@ const char swfdec_as_strings[] = SWFDEC_AS_CONSTANT_STRING ("charCodeAt") SWFDEC_AS_CONSTANT_STRING ("NetConnection") SWFDEC_AS_CONSTANT_STRING ("connect") + SWFDEC_AS_CONSTANT_STRING ("createEmptyMovieClip") /* add more here */ ; diff --git a/libswfdec/swfdec_sprite_movie_as.c b/libswfdec/swfdec_sprite_movie_as.c index c2e9a42..e173701 100644 --- a/libswfdec/swfdec_sprite_movie_as.c +++ b/libswfdec/swfdec_sprite_movie_as.c @@ -274,6 +274,24 @@ swfdec_sprite_movie_swapDepths (SwfdecAs } static void +swfdec_sprite_movie_createEmptyMovieClip (SwfdecAsContext *cx, SwfdecAsObject *obj, + guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval) +{ + SwfdecMovie *movie, *parent; + int depth; + const char *name; + + parent = SWFDEC_MOVIE (obj); + name = swfdec_as_value_to_string (cx, &argv[0]); + depth = swfdec_as_value_to_number (cx, &argv[1]); + movie = swfdec_movie_find (parent, depth); + if (movie) + swfdec_movie_remove (movie); + movie = swfdec_movie_new (SWFDEC_PLAYER (cx), depth, parent, NULL, name); + SWFDEC_AS_VALUE_SET_OBJECT (rval, SWFDEC_AS_OBJECT (movie)); +} + +static void swfdec_sprite_movie_copy_props (SwfdecMovie *target, SwfdecMovie *src) { target->matrix = src->matrix; @@ -421,6 +439,10 @@ swfdec_sprite_movie_init_context (Swfdec /* now add all the functions */ swfdec_as_object_add_function (proto, SWFDEC_AS_STR_attachMovie, SWFDEC_TYPE_SPRITE_MOVIE, swfdec_sprite_movie_attachMovie, 3); + if (version >= 6) { + swfdec_as_object_add_function (proto, SWFDEC_AS_STR_createEmptyMovieClip, SWFDEC_TYPE_SPRITE_MOVIE, + swfdec_sprite_movie_createEmptyMovieClip, 2); + } swfdec_as_object_add_function (proto, SWFDEC_AS_STR_duplicateMovieClip, SWFDEC_TYPE_SPRITE_MOVIE, swfdec_sprite_movie_duplicateMovieClip, 2); swfdec_as_object_add_function (proto, SWFDEC_AS_STR_getBytesLoaded, SWFDEC_TYPE_SPRITE_MOVIE,
Seemingly Similar Threads
- 11 commits - libswfdec/swfdec_asbroadcaster.c libswfdec/swfdec_as_strings.c libswfdec/swfdec_initialize.as libswfdec/swfdec_initialize.h libswfdec/swfdec_net_stream.c libswfdec/swfdec_player.c libswfdec/swfdec_sprite_movie_as.c test/trace
- 11 commits - libswfdec/swfdec_as_strings.c libswfdec/swfdec_sprite_movie_as.c libswfdec/swfdec_xml.c libswfdec/swfdec_xml.h libswfdec/swfdec_xml_node.c libswfdec/swfdec_xml_node.h test/image test/swfdec_test.c test/swfdec_test_image.c test/trace
- Branch 'as' - 8 commits - libswfdec/swfdec_as_context.c libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_string.c libswfdec/swfdec_as_strings.c libswfdec/swfdec_as_types.c test/trace
- Branch 'as' - 3 commits - libswfdec/swfdec_as_string.c libswfdec/swfdec_as_strings.c test/trace
- Branch 'as' - 8 commits - libswfdec/Makefile.am libswfdec/swfdec_as_array.c libswfdec/swfdec_as_context.c libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_math.c libswfdec/swfdec_as_math.h libswfdec/swfdec_as_strings.c libswfdec/swfdec_as_types.c