2011-09-22 3 views
1

Я озадачен этой функцией, которая называется до этого с параметрами 22 и 58 для xVal ad yVal соответственно. Он не отображает ничего, когда swf скомпилирован и протестирован, и его ошибка свободна. Наверняка, мне здесь что-то не хватает. Код в классе документа:глупый вопрос о строках в AS3

private function mLine(xVal : int, yVal : int) { 
     var rCol = 0x0000FF; 
     var incr = Math.round((Math.random() * 20) + 8); 
     lns.push(new Shape()); 
     var i = lns.length - 1; 

     this.addChild(lns[i]); 
     lns[i].graphics.moveTo(xVal, yVal); 
     lns[i].graphics.lineStyle(10, rCol); 
     lns[i].graphics.lineTo(xVal, yVal + 20); 
     lns[i].name = incr; 
     trace("lns[" + i + "] x is " + lns[i].x); // outputs 'lns[0] x is 0' 
     trace("xVal is " + xVal); // outputs 'xVal is 22' 
     trace("yVal is " + yVal); //outputs 'yVal is 58' 
     trace(stage.contains(lns[i])); // outputs 'true' 
    } 
+3

Ваш вопрос называется «глупый вопрос», но я не вижу никакого вопроса. –

ответ

1

Предполагая, что вы объявили private var lns = []; где-то, он рисует синюю линию (20px прямо вниз от заданного положения).

Он ничего

Это означает, что вы, вероятно, не имеют объект этого класса на сцене не отображается. В вашем классе документа вы должны использовать addChild для отображения экземпляра класса, содержащего mLine. mLine нужно как-то называть. Вы можете сделать это в конструкторе класса, но вам нужно будет удалить последний оператор трассировки, чтобы избежать ошибки с нулевым указателем, потому что stage будет null.

Редактировать: Missed that you said it in the Document class. Итак, попробуйте и посмотрите, работает ли что-нибудь еще. Проблема не связана с этой функцией.

+0

, поэтому проблема была еще проще, чем все это. Мой мувиклип был очень высоким, 5000 пикселей высотой, и когда я его тестировал, он показывал только нижнюю часть экрана, поэтому я не мог видеть синюю линию, которая появляется. –

0

Ваш код выглядит так, как будто он должен работать. Я переписал его, чтобы соответствовать лучше ActionScript 3 лучшие практики

private function drawLine(xVal:int, yVal:int):void 
{ 
    var lineColor:uint = 0x0000FF; 

    var lineShape:Shape = new Shape(); 
    //lineShape.name = String(Math.round((Math.random() * 20) + 8)); 
    lineShape.graphics.lineStyle(10, lineColor); 
    lineShape.graphics.moveTo(xVal, yVal); 
    lineShape.graphics.lineTo(xVal, yVal + 20); 
    addChild(lineShape); 
    lines.push(lineShape); 
} 

х и у свойства фигуры оба будут равна нулю, потому что вы никогда не устанавливали. вы просто рисуете линии внутри формы на xVal и yVal. Вы можете сделать то же самое вот так:

private function mLine(xVal:int, yVal:int) 
{ 
    var lineColor:uint = 0x0000FF; 

    var lineShape:Shape = new Shape(); 
    //lineShape.name = String(Math.round((Math.random() * 20) + 8)); 
    lineShape.graphics.lineStyle(10, lineColor); 
    lineShape.graphics.moveTo(0, 0); 
    lineShape.graphics.lineTo(0, 20); 
    lineShape.x = xVal; 
    lineShape.y = yVal; 
    addChild(lineShape); 
    lines.push(lineShape); 
} 

Не знаете, почему его вовсе не появляется вовсе для вас.

Смежные вопросы