AS3で不要になったインスタンスを削除しメモリを解放する「Cleaner」クラス

ActionScript3.0で不要になったインスタンスを削除しメモリを解放する「Cleaner」クラスを作成しました。

指定したオブジェクトの子を、任意の数まで削除します。新しい子から順番に削除するか、古い子から順番に削除するかの指定と、最後にオブジェクトへ nullを代入してメモリを解放するかの指定ができます。

ファイル

使用方法

  • _container(DisplayObjectContainer)の子を、古いものから順番に全て削除する
1
Cleaner.deleteContainer(_container);
  • _mc(MovieClip)の子を、古いものから順番に全て削除し、最後に nullを代入する
1
Cleaner.deleteMovieClip(_mc, 0, null);
  • _sp(Sprite)の子を、最後の1つを除いて新しいものから順番に削除する
1
Cleaner.deleteSprite(_sp, 1, "null,undefined以外の文字列", true);

パラメータ解説

container, mc, _sp

子を削除するオブジェクト

[DisplayObjectContainer, MovieClip, Sprite][省略不可]

remainNum

幾つ子を残すか

[uint][規定値:0][省略可]

toNull

最後にオブジェクトに nullを代入する場合は、nullか undefinedを指定[String][規定値:”String as Null”*1][省略可]

isReverse

新しいもの/上から順番に削除するか

[Boolean][規定値:false][省略可]

ソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package net.dolice.utils{
  import flash.display.DisplayObjectContainer;
  import flash.display.MovieClip;
  import flash.display.Sprite;
  public class Cleaner {
      public static function deleteContainer(
        _container:DisplayObjectContainer,
        remainNum:uint=0,
        toNull:String="String as Null",
        isReverse:Boolean=false
      ):void {
          if (_container == null) {
              return;
          }
          if (isReverse) {
              while (_container.numChildren > remainNum) {
                  _container.removeChildAt(_container.numChildren - 1);
              }
          } else {
              while (_container.numChildren > remainNum) {
                  _container.removeChildAt(0);
              }
          }
          if (toNull == null) {
              _container = null;
          }
      }
      public static function deleteMovieClip(
        _mc:MovieClip,
        remainNum:uint=0,
        toNull:String="String as Null",
        isReverse:Boolean=false
      ):void {
          if (_mc == null) {
              return;
          }
          if (isReverse) {
              while (_mc.numChildren > remainNum) {
                  _mc.removeChildAt(_mc.numChildren - 1);
              }
          } else {
              while (_mc.numChildren > remainNum) {
                  _mc.removeChildAt(0);
              }
          }
          if (toNull == null) {
              _mc = null;
          }
      }
      public static function deleteSprite(
        _sp:Sprite,
        remainNum:uint=0,
        toNull:String="String as Null",
        isReverse:Boolean=false
      ):void {
          if (_sp == null) {
              return;
          }
          if (isReverse) {
              while (_sp.numChildren > remainNum) {
                  _sp.removeChildAt(_sp.numChildren - 1);
              }
          } else {
              while (_sp.numChildren > remainNum) {
                  _sp.removeChildAt(0);
              }
          }
          if (toNull == null) {
              _sp = null;
          }
      }
  }
}
   このエントリーをはてなブックマークに追加

About

Masaki Hirokawa (@dolice_apps)

デザインエンジニア 廣川政樹の開発ブログ。Objective-Cや Javaなど iPhone/Androidアプリ開発に関する技術情報を掲載しています。

iPhone apps

  • リラックス・ヒーリング(無料)
  • 望みが叶う!引き寄せの法則アプリ(無料)
  • ミステリー - 怖い話や不思議な体験、都市伝説まとめ
  • 浮世絵壁紙 - 美しい日本画ギャラリー(無料)
  • アート壁紙HD(無料)
  • 綺麗な壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)
  • クールな壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)

Android apps

  • 浮世絵壁紙 - 美しい日本画ギャラリー
  • 綺麗な高画質壁紙

Objective-C Classes

Tag Cloud

ActionScript(9) ActionScript3(7) Ad(4) Adfurikun(2) AdMob(9) Android(10) Animation(17) AppDelegate(3) ARC(1) ArrayList(1) AVAudioPlayer(4) AVAudioSession(1) AVFoundation(3) Banner(2) Bitmap(1) Camera(4) CGAffineTransform(4) CGBlendMode(2) CGContextRef(1) CGImageRef(1) Classes(44) CLLocationManager(1) ConnectivityManager(1) ContentResolver(1) CoreLocation(2) Delegate(3) Device(7) Display(1) DisplayMetrics(1) Download(101) Facebook(6) Foundation(72) Framework(2) Google Analytics(1) Handler(1) iAd(6) ImageView(1) In-AppPurchase(1) iOS(12) iOS 7(15) iOS 7.1(3) iOS 8(1) iPad(7) iPhone(21) iPhone 6(4) Java(7) JavaScript(2) LINE(4) Localize(1) Magazine(1) MediaStore(1) MFComposeViewController(1) Nend(1) NetworkInfo(1) NSArray(23) NSCalendar(3) NSData(2) NSDate(7) NSDateComponents(2) NSDateFormatter(2) NSDictionary(12) NSEnumerator(1) NSIndexSet(1) NSInteger(6) NSMutableArray(17) NSMutableDictionary(5) NSMutableOrderedSet(7) NSMutableString(4) NSMutableURLRequest(1) NSNotificationCenter(1) NSNumber(1) NSObject(1) NSOrderedSet(7) NSRange(2) NSSelectorFromString(1) NSSet(6) NSString(19) NSTimer(4) NSTimeZone(1) NSURL(7) NSURLConnection(1) NSURLRequest(2) NSUserDefaults(7) NSXMLParser(2) Objective-C(222) PHP(1) Products(14) QuartzCore(3) RSS(2) Runnable(1) Sample(51) Screensaver(9) SDK(2) ShareCompat(1) Social(10) StoreKit(1) Twitter(6) UIAccelerometer(3) UIActionSheet(1) UIActivityIndicator(1) UIActivityIndicatorView(3) UIActivityViewController(1) UIAlertView(5) UIApplication(7) UIButton(4) UIColor(3) UIDatePicker(5) UIDevice(6) UIDeviceOrientation(1) UIEvent(6) UIImage(15) UIImagePickerController(4) UIImageView(12) UIKit(58) UILabel(7) UINavigationBar(4) UINavigationItem(1) UIPasteboard(4) UIScreen(1) UIScrollBar(1) UIScrollView(1) UISlider(3) UIStoryboardSegue(3) UISwitch(1) UITabBar(3) UITableView(4) UITextField(2) UIView(11) UIViewAnimationTransition(1) UIViewController(4) UIWebView(5) WindowManager(1) Xcode(48) Xcode 5(8) Xcode 5.1(2)