Dear All,
Need Help. I create movieclip called ‘pinguin1’ and attached with code. Inside ‘pinguin1’ mc contain scrollable movieclip called ‘main_mc’ with code too.
Problem is when ‘pinguin1’ start ‘main_mc’ won’t work, text won’t getting scrolled up and down. If I build only ‘main_mc’ (outside ‘pinguin1’) it work well.
Is there any wrong code?
Appreciate all. Ty
pinguin1 code :
on (release) {
_root.x +=2;
_root.pinguin1.swapDepths(_root.x);
play();
}
main_mc code :
//editable variables
var scPadding:Number = 5;
var scrollbarOffset:Number = 10; //distance from scPadding
var scrollbarWidth:Number = 2;
var scrollHandleRadius:Number = 5;
var scrollExpand:Number = 6; //scroll face hit area expand
var scrollHandleColor:Number = 0x000000;
var scrollHandleAlpha:Number = 100;
var scrollFaceColor:Number = 0x000000;
var scrollFaceAlpha:Number = 100;
var friction:Number = 1.3;
var projectSpeed:Number = 3.5;
var wheelMultiplier:Number = 15;
//---
var mouseListenersMade:Boolean = false;
createScroller(main_mc, main_mc.myContent, main_mc.myMask, main_mc.myFooter);
main_mc.myContent.myText.mouseEnabled = main_mc.myContent.myText.mouseWheelEnabled = false;
main_mc.myContent.myText.autoSize = true;
main_mc.myContent.myText.wordWrap = true;
main_mc.myContent.myText.multiline = true;
function createScroller(scTargetMC, scTargetContent, scTargetMask, scFooter) {
var scTargetContentStaticY:Number = scTargetContent._y;
scTargetMC.createEmptyMovieClip("scroller", scTargetMC.getNextHighestDepth());
scTargetMC.scroller.createEmptyMovieClip("scrollHandle", scTargetMC.scroller.getNextHighestDepth());
scTargetMC.scroller.createEmptyMovieClip("scrollFace", scTargetMC.scroller.getNextHighestDepth());
duplicateMovieClip(scTargetMask, "scFooterMask", scTargetMC.getNextHighestDepth());
scFooter.setMask(scTargetMC.scFooterMask);
scTargetContent.setMask(scTargetMask);
sH = scTargetMC.scroller.scrollHandle;
sF = scTargetMC.scroller.scrollFace;
drawCircle(sH, scrollHandleRadius, scrollHandleColor, scrollHandleAlpha);
sH._x = scTargetContent._width + scPadding + scrollbarOffset - (scrollHandleRadius/2);
sF._x = scTargetContent._width + scPadding + scrollbarOffset + (scrollbarWidth/2);
sF._y = scTargetContentStaticY; //static, so use instead of scTargetContent
drawScrollFace(sF, scTargetMask);
positionScrollHandle(sH, scTargetContentStaticY, scTargetMask, scTargetContent, scFooter);
wheelSpeed = wheelMultiplier * sF._height / scTargetContent._height;
var scrollFrame:MovieClip = scTargetMC.scroller.createEmptyMovieClip("scrollFrame",scTargetMC.scroller.getNextHighestDepth());
if (!hideScrollbar(scTargetMC, scTargetContent, scFooter, scTargetMask)) {
sF.useHandCursor = sH.useHandCursor = true;
sF.onPress = function() {// bar for scrolling - clicking drags handle too
drag = true;
if (this._parent._ymouse>this._y+this._height-sH._height) {
sH._y = this._y+this._height-sH._height;
} else {
sH._y = this._parent._ymouse;
}
sH.startDrag(false,sH._x,scTargetContentStaticY,sH._x,scTargetContentStaticY+sF._height-sH._height);
_root.scrollInfo(scrollFrame);
};
sF.onMouseUp = function() {
sH.stopDrag();
drag = false;
};
scrollInfo = function(targetScroll_mc) {
targetScroll_mc.onEnterFrame = function() {
if (drag == false) {
delete targetScroll_mc.onEnterFrame;
}
sHPercent = 100*(sH._y-scTargetContentStaticY)/(sF._height-sH._height);
scTargetContent._y = (sHPercent*(scTargetContent._height + scFooter._height -scTargetMask._height))/-100+scTargetContentStaticY;
scFooter._y = scTargetContent._height + scTargetContent._y;//scroll scFooter
//contPercent = 100*(scTargetContent._y-scTargetContentStaticY)/(scTargetContent._height+scFooter._height-scTargetMask._height)*-1;
};
};
setMouseWheel(true, scTargetContentStaticY, sF, scTargetContent, scFooter, scTargetMC); // enable the mouse wheel
if (!mouseListenersMade) {
mouseListener = new Object();
mouseListener.onMouseWheel = function(delta) {
if (_root.hitTest(_xmouse, _ymouse)) {//to scroll anywhere
if (delta<0) moveDragger(1);
if (delta>0) moveDragger(-1);
}
};
Mouse.addListener(mouseListener);
mouseListener = new Object();
mouseListener.onMouseWheel = function(delta) {
if (scTargetContent.hitTest(_xmouse, _ymouse, true)) {
if (delta<0) {
moveDragger(1);
}
if (delta>0) {
moveDragger(-1);
}
}
};
Mouse.addListener(mouseListener);
MouseWheel.addListener(this);
function onMouseWheel(delta:Number):Void {
if (scTargetContent.hitTest(_xmouse, _ymouse, true)) {
if (delta<0) {
moveDragger(1);
} else {
moveDragger(-1);
}
}
}
mouseListenersMade = true;
}
}
else {//reset y position of text & stop scrolling
scTargetContent._y = scTargetContentStaticY;
sH._y = scTargetContentStaticY;
setMouseWheel(false, scTargetContentStaticY, sF, scTargetContent, scFooter, scTargetMC);
}
}
function setMouseWheel(stat:Boolean, scTargetContentStaticY, sF, scTargetContent, scFooter, scTargetMC) {
if (stat) {
moveDragger = function (delt) {
sH._y += delt*wheelSpeed;
if (sH._y>=scTargetContentStaticY+sF._height-sH._height) {//limit bottom
sH._y = scTargetContentStaticY+sF._height-sH._height;
scTargetContent._y = scTargetContentStaticY - scTargetContent._height - scFooter._height + scTargetMask._height;
scFooter._y = scTargetContent._height + scTargetContent._y;//scroll scFooter
} else if (sH._y<=scTargetContentStaticY) {//limit top
sH._y = scTargetContentStaticY;
scTargetContent._y = scTargetContentStaticY;
scFooter._y = scTargetContent._height + scTargetContent._y;//scroll scFooter
} else {
_root.scrollInfo(scTargetMC.scroller.scrollFrame);
updateAfterEvent();
}
};
}
else {
moveDragger = null;
}
return moveDragger;
}
function positionScrollHandle(sH, scTargetContentStaticY, scTargetMask, scTargetContent, scFooter) {
if ((sH._y > (scTargetContentStaticY+scTargetMask._height)) || (scTargetContent._y < (scTargetContentStaticY - scTargetContent._height - scFooter._height + scTargetMask._height)) ) {//limit bottom
sH._y = sF._height - sH._height + scTargetContentStaticY;
scTargetContent._y = scTargetContentStaticY - scTargetContent._height - scFooter._height + scTargetMask._height;//scroll text
scFooter._y = scTargetContent._height + scTargetContent._y;//scroll scFooter
}
else if ((sH._y <= scTargetContentStaticY) || (scTargetContent._y >= scTargetContentStaticY)) {//limit top
sH._y = scTargetContentStaticY;
scTargetContent._y = scTargetContentStaticY;
scFooter._y = scTargetContent._height + scTargetContent._y;//scroll scFooter
}
else {//scroller is in the middle
contPercent = 100*(scTargetContent._y-scTargetContentStaticY)/(scTargetContent._height+scFooter._height-scTargetMask._height)*-1;
sH._y = (contPercent*(sF._height-sH._height))/100+scTargetContentStaticY;
//sHPercent = 100*(sH._y-scTargetContentStaticY)/(sF._height-sH._height);
}
}
function hideScrollbar(scTargetMC, scTargetContent, scFooter, scTargetMask){
//this checks to see if the scrollbar is needed & hides it if it isn't
if ((scTargetContent._height + scFooter._height - scPadding-1) > (scTargetMask._height)) {
scTargetMC.scroller._visible = true;
return false;
}
else {
scTargetMC.scroller._visible = false;
return true;
}
}
function drawScrollFace(sF, scTargetMask) {
sF.clear();
sF.moveTo(0, 0);
sF.beginFill(scrollFaceColor,scrollFaceAlpha);
sF.lineTo(scrollbarWidth, 0);
sF.lineTo(scrollbarWidth,scTargetMask._height);
sF.lineTo(0,scTargetMask._height);
sF.lineTo(0,0);
sF.endFill();
//scroll face hit area
sF.moveTo(0-scrollExpand, 0);
sF.beginFill(0x000000,0);
sF.lineTo(scrollbarWidth+scrollExpand, 0);
sF.lineTo(scrollbarWidth+scrollExpand,scTargetMask._height);
sF.lineTo(0-scrollExpand,scTargetMask._height);
sF.lineTo(0-scrollExpand,0);
sF.endFill();
}
function drawCircle(target_mc:MovieClip, radius:Number, fillColor:Number, fillAlpha:Number):Void {
var x:Number = radius;
var y:Number = radius;
with (target_mc) {
beginFill(fillColor, fillAlpha);
moveTo(x + radius, y);
curveTo(radius + x, Math.tan(Math.PI / 8) * radius + y, Math.sin(Math.PI / 4) * radius + x, Math.sin(Math.PI / 4) * radius + y);
curveTo(Math.tan(Math.PI / 8) * radius + x, radius + y, x, radius + y);
curveTo(-Math.tan(Math.PI / 8) * radius + x, radius+ y, -Math.sin(Math.PI / 4) * radius + x, Math.sin(Math.PI / 4) * radius + y);
curveTo(-radius + x, Math.tan(Math.PI / 8) * radius + y, -radius + x, y);
curveTo(-radius + x, -Math.tan(Math.PI / 8) * radius + y, -Math.sin(Math.PI / 4) * radius + x, -Math.sin(Math.PI / 4) * radius + y);
curveTo(-Math.tan(Math.PI / 8) * radius + x, -radius + y, x, -radius + y);
curveTo(Math.tan(Math.PI / 8) * radius + x, -radius + y, Math.sin(Math.PI / 4) * radius + x, -Math.sin(Math.PI / 4) * radius + y);
curveTo(radius + x, -Math.tan(Math.PI / 8) * radius + y, radius + x, y);
endFill();
}
}