fieldTop && clipX > fieldLeft && clipX < fieldRight; var onPrep:Boolean = clipY > 0 - margin && clipY < prep.height + margin && clipX > 0 - margin && clipX < prep.width + margin; if(onField) { clipToField(clip); } else if(onPrep) { //snap back clip.x = clip.lastX; clip.y = clip.lastY; } else { //if clip is out of prep and field, remove it prep.removeChild(clip); clip.remove(); } } else if(clip.lastParent == "field") { var prepTop:Number = prep.y - prepMargin - field.y; var prepBottom:Number = prepTop + prep.height + 2 * prepMargin; var prepLeft:Number = prep.x - prepMargin - field.x; var prepRight:Number = prepLeft + prep.width + 2 * prepMargin; var onField:Boolean = clipY > 0 && clipY < field.height && clipX > 0 && clipX < field.width; var onPrep:Boolean = clipY > prepTop && clipY < prepBottom && clipX > prepLeft && clipX < prepRight; if(onField) adjustClipPosition(clip); else{ clip.stop(); clipToPrep(clip); } } } private function setClipVolume(clip:student_mma_16_Clip):void { if(clip.x >= 0 && clip.x <= field.width - clip.width && clip.y >= 0 && clip.y <= field.height - clip.height) clip.setVolume(1 - clip.y / (field.height - clip.height)); } private function moveClip(e:MouseEvent):void { var clip:student_mma_16_Clip = e.currentTarget as student_mma_16_Clip; if(clip.state == student_mma_16_Clip.STATE_PLAYING) { setClipVolume(clip); } } private function adjustClipPosition(clip:student_mma_16_Clip):void { if(clip.x < 0) clip.x = 0; if(clip.x + clip.width > field.width) clip.x = field.width - clip.width; if(clip.y < 0) clip.y = 0; if(clip.y + clip.height > field.height) clip.y = field.height - clip.height; } ]]>