<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-901884826082014121</id><updated>2011-07-07T19:21:00.922-07:00</updated><category term='GC'/><category term='Tween'/><category term='DisplayObjectContainer'/><category term='TweenEvent'/><category term='Sprite'/><category term='Actionscript3'/><category term='MovieClip'/><category term='removeChild'/><category term='Garbage Collector'/><category term='addChild'/><title type='text'>Flash Actionscript Tutorial</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://as3tutorial.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/901884826082014121/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://as3tutorial.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>BELLinSKY</name><uri>http://www.blogger.com/profile/10976801474538745076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-901884826082014121.post-3675455462322818909</id><published>2009-11-10T12:11:00.000-08:00</published><updated>2009-11-11T06:16:39.041-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tween'/><category scheme='http://www.blogger.com/atom/ns#' term='GC'/><category scheme='http://www.blogger.com/atom/ns#' term='Actionscript3'/><category scheme='http://www.blogger.com/atom/ns#' term='Garbage Collector'/><category scheme='http://www.blogger.com/atom/ns#' term='TweenEvent'/><title type='text'>Tween останавливается?</title><content type='html'>Да. В Actionscript3 порой удобней "запустить" какой-нибудь Tween и забыть о нем, чем вешать обработчик на ENTER_FRAME и вручную менять какой-то scaleX, например. Но. Tween иногда непредсказуемо останавлиается! Как этого гарантированно избежать?&lt;br /&gt;Tween нельзя запускать так:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;new Tween(myMovieClip, "alpha", 0, 1, null, 1, true);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Потому что при очередном проходе GC (Garbage Collector — сборщик мусора) ваш Tween улетит в мусорник. Так происходит с любым объектом, если:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;нет ссылок на этот объект&lt;/li&gt;&lt;br /&gt;&lt;li&gt;не прописано никаких обработчиков событий&lt;/li&gt;&lt;br /&gt;&lt;li&gt;он не является дочерним ни для одного DisplayObjectContainer (если он сам является экзеспляром DisplayObject)&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Решение для случая, когда нужно сделать какую-то простую анимацию, подразумевает наличие глобальной переменной типа Tween:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;myGlobalTweenKeeper = new Tween(myMovieClip, "alpha", 0, 1, null, 1, true);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;А в случае, когда нужно синхронно сделать анимацию нескольких параметров одного объекта, я пользуюсь глобальным массивом:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;myGlobalTweenKeeperArray = new Array();&lt;br /&gt;myGlobalTweenKeeperArray.push(new Tween(myMovieClip, "alpha", 0, 1, null, 1, true));&lt;br /&gt;myGlobalTweenKeeperArray.push(new Tween(myMovieClip, "scaleX", 2, 1, null, 1, true));&lt;br /&gt;myGlobalTweenKeeperArray.push(new Tween(myMovieClip, "scaleY", 2, 1, null, 1, true));&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;В обоих случаях также рекомендую прописать обработчик события завершения анимации:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// для первого примера&lt;br /&gt;myGlobalTweenerKeeper.addEventListener(TweenEvent.MOTION_FINISH, onFinish);&lt;br /&gt;&lt;br /&gt;// для второго примера&lt;br /&gt;myGlobalTweenerKeeperArray[0].addEventListener(TweenEvent.MOTION_FINISH, onFinish);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Во втором случае я приписал обработчик лишь для одной анимации, потому что все анимации имеют одинаковый хронометраж. В случае, когда синхронные анимации заканчиваются не в один момент, следует выбрать самую долгую.&lt;br /&gt;В самом же обработчике onFinish() нужно отписаться от события и обнулить наших "хранителей", чтобы GC мог их удалить из памяти при очередном обходе:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;private function onFinish(e:TweenEvent):void&lt;br /&gt;{&lt;br /&gt;     e.target.removeEventListener(TweenEvent.MOTION_FINISH, onFinish);&lt;br /&gt;     &lt;br /&gt;     // для первого примера&lt;br /&gt;     myGlobalTweenKeeper = null;&lt;br /&gt;     &lt;br /&gt;     // для второго примера я делаю так&lt;br /&gt;     myGlobalTweenKeeperArray = new Array();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;И все анимации проигрываются до конца.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/901884826082014121-3675455462322818909?l=as3tutorial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3tutorial.blogspot.com/feeds/3675455462322818909/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3tutorial.blogspot.com/2009/11/tween.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/901884826082014121/posts/default/3675455462322818909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/901884826082014121/posts/default/3675455462322818909'/><link rel='alternate' type='text/html' href='http://as3tutorial.blogspot.com/2009/11/tween.html' title='Tween останавливается?'/><author><name>BELLinSKY</name><uri>http://www.blogger.com/profile/10976801474538745076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-901884826082014121.post-357736021097546472</id><published>2009-11-10T11:41:00.000-08:00</published><updated>2009-11-10T17:59:36.318-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='removeChild'/><category scheme='http://www.blogger.com/atom/ns#' term='DisplayObjectContainer'/><category scheme='http://www.blogger.com/atom/ns#' term='Actionscript3'/><category scheme='http://www.blogger.com/atom/ns#' term='Sprite'/><category scheme='http://www.blogger.com/atom/ns#' term='MovieClip'/><category scheme='http://www.blogger.com/atom/ns#' term='addChild'/><title type='text'>Как быстро очистить контейнер?</title><content type='html'>Под контейнером я понимаю MovieClip, Sprite или другой экземпляр класса DisplayObjectContainer&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;while (myContainer.numChildren)&lt;br /&gt;{&lt;br /&gt;     myContainer.removeChildAt(0);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Таким способом мы можем быстро очистить контейнер от объектов, добавленных ранее с помощью addChild().&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/901884826082014121-357736021097546472?l=as3tutorial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3tutorial.blogspot.com/feeds/357736021097546472/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3tutorial.blogspot.com/2009/11/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/901884826082014121/posts/default/357736021097546472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/901884826082014121/posts/default/357736021097546472'/><link rel='alternate' type='text/html' href='http://as3tutorial.blogspot.com/2009/11/blog-post.html' title='Как быстро очистить контейнер?'/><author><name>BELLinSKY</name><uri>http://www.blogger.com/profile/10976801474538745076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
