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;
}
]]>