public function getControlsArray()
 {
     $ret = array();
     $frame = 0;
     $frame_name = null;
     $display_stack = array();
     $actions_stack = array();
     $remove_stack = array();
     foreach ($this->_tags as $tag) {
         switch ($tag->getCode()) {
             case Media_SWF_Tag::PLACE_OBJECT:
             case Media_SWF_Tag::PLACE_OBJECT2:
             case Media_SWF_Tag::PLACE_OBJECT3:
                 $depth = $tag->getField('Depth');
                 $characterId = $tag->getField('CharacterId');
                 $display = $display_stack[$depth];
                 if ($characterId) {
                     $id = $this->root->getTagByCharacterId($characterId)->getElementIdString();
                     if ($display) {
                         $display['cid'] = $id;
                         //$display['replace'] = true;
                     } else {
                         $display = array('dp' => $depth, 'cid' => $id);
                     }
                 } else {
                     //if ($display['replace']) {
                     //  unset($display['replace']);
                     //}
                 }
                 if ($tag->hasField('Name')) {
                     $display['name'] = $tag->getField('Name');
                 }
                 if ($tag->hasField('Matrix')) {
                     $matrix = Media_SWF_SVGUtill::matrixToArray($tag->getField('Matrix'));
                     if ($matrix != array(1, 0, 0, 1, 0, 0)) {
                         $display['mtx'] = Media_SWF_SVGUtill::matrixToArray($tag->getField('Matrix'));
                     }
                 }
                 if ($tag->hasField('ColorTransform')) {
                     $cxform = $tag->getField('ColorTransform');
                     $display['cx'] = Media_SWF_SVGUtill::cxformToArray($tag->getField('ColorTransform'));
                 }
                 if ($tag->hasField('ClipDepth')) {
                     $display['cdp'] = $tag->getField('ClipDepth');
                 }
                 $display_stack[$depth] = $display;
                 break;
             case Media_SWF_Tag::REMOVE_OBJECT:
             case Media_SWF_Tag::REMOVE_OBJECT2:
                 // SVGでは何もしない
                 $depth = $tag->getField('Depth');
                 $remove_stack[] = $depth;
                 unset($display_stack[$depth]);
                 break;
             case Media_SWF_Tag::DO_ACTION:
                 $actions_stack[] = $tag->convertArray();
                 break;
             case Media_SWF_Tag::FRAME_LABEL:
                 $frame_name = $tag->getField('Name');
                 break;
             case Media_SWF_Tag::SHOW_FRAME:
                 ++$frame;
                 ksort($display_stack);
                 $d = array();
                 foreach ($display_stack as $i => $display) {
                     $d[] = $display;
                     //if ($display_stack[$i]['new']) unset($display_stack[$i]['new']);
                     //if ($display_stack[$i]['replace']) unset($display_stack[$i]['replace']);
                 }
                 $r = array('d' => $d);
                 if (count($remove_stack) > 0) {
                     $r['rm'] = $remove_stack;
                 }
                 if ($frame_name) {
                     $r['label'] = $frame_name;
                 }
                 if (count($actions_stack) > 0) {
                     $r['act'] = $actions_stack;
                 }
                 $ret[] = $r;
                 $remove_stack = array();
                 $actions_stack = array();
                 $frame_name = null;
                 break;
             case Media_SWF_Tag::SET_BACKGROUND_COLOR:
                 break;
             case Media_SWF_Tag::END:
                 break;
             case Media_SWF_Tag::FILE_ATTRIBUTES:
             case Media_SWF_Tag::METADATA:
                 break;
             default:
                 if (!$tag->isDefinitionTag()) {
                     var_dump($tag->getTagName());
                 }
         }
     }
     return $ret;
 }