Рисование полигонов в ActionScript 3.0 - вектор. <Number>вектор. <int>drawPath () Flash Player 10 против 9 ошибка - PullRequest
1 голос
/ 21 октября 2011

Я работаю над приложением Flash, которое рисует многоугольники вершина за вершиной строка за строкой из нескольких учебных пособий.

Проблема - у меня все это работает во Flash Player 10, но мне нужно это во Flash Player 9. Когда я конвертирую его в Flash Player 9, я получаю следующие ошибки:

  • AS_Classes \ Polygon.as, строка 8 1046: тип не найден или не является константой времени компиляции: Number.
  • AS_Classes \ Polygon.as, строка 9 1046: тип не найден или не является константой времени компиляции: int.
  • AS_Classes \ Polygon.as, строка 18 1120: доступ к неопределенному свойству Number.
  • AS_Classes \ Polygon.as, строка 19 1120: доступ к неопределенному свойству int.

    • Как мне преобразовать это во Flash Player 9?
    • Есть ли простые замены для них? Я думаю, что это "drawPath ()", то есть Flash 10.

This, "var vertexList: Vector .;" vertexList = new Vector. (); "... также используется во всем коде для" graphics.moveTo (vertexList [vertexList.length-1] .x ", хотя я думаю, что" moveTo () "совместим с Flash 9.

Часть кода, выдающая первые ошибки:

package com.AS_Classes {
    import flash.display.Sprite;

    public class Polygon extends Sprite{
        (Line 8) public var pathCoords:Vector.<Number>;
        (Line 9) public var pathCommands:Vector.<int>;

        public var fillColor:uint;

        public function Polygon(_vertexList,_fillColor=0x000000) {
            fillColor = _fillColor;

            (Line 18) pathCoords = new Vector.<Number>();
            (Line 19) pathCommands = new Vector.<int>();

            //first moveTo
            pathCommands[0]=1;
            pathCoords.push(_vertexList[0].x);
            pathCoords.push(_vertexList[0].y);

            //next LineTos
            for (var i:int = 1; i<= _vertexList.length-1; i++) {

                pathCoords.push(_vertexList[i].x);
                pathCoords.push(_vertexList[i].y);
                pathCommands.push(2);

            }

            //final LineTo
            pathCommands.push(2);
            pathCoords.push(_vertexList[0].x);
            pathCoords.push(_vertexList[0].y);
        }

        public function Re_Draw():void{
            this.graphics.clear();
            this.graphics.beginFill(fillColor);
            this.graphics.drawPath(pathCommands,pathCoords);
            this.graphics.endFill();
        }
    }
}

1 Ответ

2 голосов
/ 21 октября 2011

Я не думаю, что векторы поддерживаются в Flash Player 9. Вектор - это массив, который знает, какой тип ожидать, тип указывается между морковкамиизменить все векторы на простые массивы.Поэтому, когда вы видите что-то вроде Vector.<Number>, просто поместите Array.

Конечно, есть снижение производительности.

...