1 50 51 package org.openlaszlo.iv.flash.api.button; 52 53 import java.io.PrintStream ; 54 import org.openlaszlo.iv.flash.parser.*; 55 import org.openlaszlo.iv.flash.util.*; 56 import org.openlaszlo.iv.flash.api.*; 57 import org.openlaszlo.iv.flash.api.sound.*; 58 59 62 public class ButtonSound extends FlashObject { 63 64 protected Button button; 65 protected FlashDef[] sounds = new FlashDef[4]; 66 protected SoundInfo[] soundInfos = new SoundInfo[4]; 67 68 public ButtonSound() {} 69 70 public int getTag() { 71 return Tag.DEFINEBUTTONSOUND; 72 } 73 74 public void setButton( Button button ) { 75 this.button = button; 76 } 77 78 public static ButtonSound parse( Parser p ) { 79 ButtonSound o = new ButtonSound(); 80 o.button = (Button) p.getDef( p.getUWord() ); 81 for( int i=0; i<o.sounds.length; i++ ) { 82 int id = p.getUWord(); 83 if( id != 0 ) { 84 o.sounds[i] = p.getDef( id ); 85 o.soundInfos[i] = SoundInfo.parse(p); 86 } else { 87 o.sounds[i] = null; 88 } 89 } 90 o.button.setButtonSound( o ); 91 return o; 92 } 93 94 public void write( FlashOutput fob ) { 95 int pos = fob.getPos(); 96 fob.skip(6); 97 fob.writeDefID( button ); 98 for( int i=0; i<sounds.length; i++ ) { 99 if( sounds[i] != null ) { 100 fob.writeDefID( sounds[i] ); 101 soundInfos[i].write( fob ); 102 } else { 103 fob.writeWord(0); 104 } 105 } 106 fob.writeLongTagAt(getTag(), fob.getPos()-pos-6, pos); 107 } 108 109 public void printContent( PrintStream out, String indent ) { 110 out.println( indent+"ButtonSound:" ); 111 } 112 113 public void collectDeps( DepsCollector dc ) { 114 for( int i=0; i<sounds.length; i++ ) { 116 if( sounds[i] != null ) dc.addDep( sounds[i] ); 117 } 118 } 119 120 protected FlashItem copyInto( FlashItem item, ScriptCopier copier ) { 121 super.copyInto( item, copier ); 122 FlashDef[] _sounds = new FlashDef[4]; 123 SoundInfo[] _infos = new SoundInfo[4]; 124 for( int i=0; i<sounds.length; i++ ) { 125 if( sounds[i] != null ) { 126 _sounds[i] = copier.copy( sounds[i] ); 127 _infos[i] = (SoundInfo) soundInfos[i].getCopy( copier ); 128 } 129 } 130 ((ButtonSound)item).sounds = _sounds; 131 ((ButtonSound)item).soundInfos = _infos; 132 return item; 135 } 136 137 public FlashItem getCopy( ScriptCopier copier ) { 138 return copyInto( new ButtonSound(), copier ); 139 } 140 } 141 | Popular Tags |