Я застрял с чем-то, что, я уверен, должно быть довольно простым. Я объявляю две вертикальные строки из библиотеки, а затем передаю каждую по очереди функцию, которая работает на переданной ей строке. Код выполняется без ошибок, но, по-видимому, переписывает первую строку, когда функция вызывается во второй раз, по-видимому, из-за использования термина «myLine» в заголовке функции. Может ли кто-нибудь сообщить мне, как передать каждую строку одной функции, но функция работает только на этой строке?Функция вызова неоднократно без перезаписи переданного объекта
Код:
//declare new lines from library
var myLine1:letterLine = new letterLine();
var myLine2:letterLine = new letterLine();
//call function and pass each line in turn
VerticalLine(myLine1, lineX = stage.stageWidth/2 - lineOffset, lineY, lineLength, lineThickness, lineColour, lineTweenSpeed);
VerticalLine(myLine2, lineX = stage.stageWidth/2 - lineOffset, lineY, lineLength, lineThickness, lineColour, lineTweenSpeed);
//operate on the line passed to the function
function verticalLine(myLine, lineX:int, lineY:int, lineLength:Number, lineThickness:int, lineColour, lineTweenSpeed:Number):void {
//draw line
myLine.height = 0;
myLine.x = lineX;
myLine.y = lineY;
myLine.width = lineThickness;
var myColour:ColorTransform = myLine.transform.colorTransform;
myColour.color = lineColour;
myLine.transform.colorTransform = myColour;
addChild(myLine);
//set mask properties for line
var maskW:uint = lineThickness;
var maskH:uint = lineLength;
//set gradient properties for mask
var gradientFillType:String = GradientType.LINEAR;
var gradientColours:Array = [0x123456, 0x654321, 0x123456, 0x654321];
var gradientAlphas:Array = [0.4, 1, 1, 0.4];
var gradientRatios:Array = [0, 100, 155, 255];
var gradientMatrix:Matrix = new Matrix;
var maskRotation:Number = Math.PI/2;
var maskX:int = lineX;
var maskY:int = myLine.y - lineLength/2;;
gradientMatrix.createGradientBox(maskW, maskH, maskRotation, maskX, maskY);
var spreadMethod:String = SpreadMethod.PAD;
myLine.cacheAsBitmap = true;
//draw mask shape
var myMask = new Shape ;
myMask.graphics.beginGradientFill(gradientFillType, gradientColours, gradientAlphas, gradientRatios, gradientMatrix, spreadMethod);
myMask.graphics.drawRect(maskX, maskY, maskW, maskH);
myMask.cacheAsBitmap = true;
addChild(myMask);
//mask line
myLine.mask = myMask;
TweenLite.to(myLine, lineTweenSpeed,{height:lineLength, ease:Linear.easeIn});
}
Опубликовать функцию body. Я сильно сомневаюсь, что вы думаете, что происходит на самом деле. –
Я ничего не вижу в этом коде, что могло бы вызывать то, что вы говорите. Мысли: вы передаете одинаковые значения оба раза, так что обе строки будут идентичными (или это было просто для иллюстрации вызова его дважды в сообщении?) –
Привет, Джейсон. Нет, не просто иллюстрация - мне нужно дважды вызвать эту функцию и заставить ее работать с двумя отдельными объектами myline. Мысль о моей собственной: имеет ли значение, если функция вызывается *, когда она в настоящее время работает при более раннем вызове? * Другими словами, отключает ли Flash выполнение (и отбрасывание) первого вызова и начало заново или делает это в смысл, создать столько функций, сколько есть вызовов к этой функции, чтобы выполнять вызовы функций независимо. Имеет ли это смысл?! –