PDA

Просмотр полной версии : Программное рисование


ElLamok
26.02.2007, 21:38
Проблема следующая:
Если вбить такой код:
var nomerSectora:Number = 0;
var xCentr:Number=100;
var yCentr:Number=100;
var radius:Number=100;
var angleLast:Number = 0;
var clipArray:Array = new Array();
var clip:MovieClip;
var epsilon:Number = 1/1000;
this.createEmptyMovieClip("mc"+nomerSectora,nomerSectora);
clipArray.push("mc"+nomerSectora);
drawSector(Math.PI/4,0xff0000);
function drawSector(angle, color) {
clip = clipArray[nomerSectora];
clipArray[nomerSectora].moveTo(xCentr, yCentr);
clipArray[nomerSectora].beginFill(color, 100);
clipArray[nomerSectora].lineStyle(1, 0xff0000, 100);
for (var i:Number = 0; i<angle; i=i+Math.PI/360) {
clipArray[nomerSectora].lineTo(xCentr+radius*Math.sin(i), yCentr-radius*Math.cos(i));
}
clipArray[nomerSectora].lineTo(xCentr, yCentr);
clipArray[nomerSectora].endFill();
}
то ниче не работает, должен рисоваться сектор, если например заменить две строчки кода на
this.createEmptyMovieClip("mc"+nomerSectora);
clipArray.push(mc);
то все заработает, подскажите пожалуйста как заставить эту штуку работать
P.S. это тока кусок кода, пробовал в целом коде ( не в приведенном) обращаться так this["mc" + nomerSectora]. и так далее, но начались проблемы при дублировании клипа, во время дебага флеш говорит, что отдублировал все, но ни в какую не хочет показывать дублированные клипы, их просто нет ( хотя в левел0 они якобы лежат)
P.S2. AC 2.0 Flash 8
заранее спасибо

etc
26.02.2007, 22:18
ZOOM:
http://etcs.ru/files/zoom.png

Приведите свой код в порядок, оформив, как полагается.

Mr. Fixit
26.02.2007, 23:53
как сложно там создано, разбираться в твоем коде не хочу, если чесно. Но если надо могу кинуть код, который создает сектор...

Жень Шень
27.02.2007, 11:00
как сложно там создано, разбираться в твоем коде не хочу, если чесно. Но если надо могу кинуть код, который создает сектор...

Присоеденяюсь к вышесказанному, но код кинул...
В втором примере просто кликай мышкой.

ElLamok
27.02.2007, 16:05
Сложность заключается не в том чтоб сектор нарисовать (весчь тривиальная), проблема в обращении к клипам ( тоже весчь тривиальная :) ), я хочу через массив обращаться к клипам, для этого я их заталкиваю в массив, если потом обращаться вот так :
clipArray[index]. и указывать любое предложение, например координата прозрачность , что угодно, то работает, но стоит написать lineTo, и флэш отказывается понимать и, соответсвенно, рисовать

Borman2000
21.05.2007, 05:01
P.S. это тока кусок кода, пробовал в целом коде ( не в приведенном) обращаться так this["mc" + nomerSectora]. и так далее, но начались проблемы при дублировании клипа, во время дебага флеш говорит, что отдублировал все, но ни в какую не хочет показывать дублированные клипы, их просто нет ( хотя в левел0 они якобы лежат)
P.S2. AC 2.0 Flash 8
заранее спасибо
Попробуй перед созданием контейнера проверить getInstanceAtDepth (MovieClip.getInstanceAtDepth method). Потому как "Remember, if you accidentally add a new instance at a depth that is already used, the new object will overwrite the existing instance." (с) Flash® 8 ActionScript Bible
:)

KoLar
21.05.2007, 21:54
clipArray.push("mc"+nomerSectora);
Это ты вставил в массив текст "mc"+nomerSectora, а тебе надо ссылку на MovieClip, т.е.
clipArray.push(this["mc"+nomerSectora]);
В этом случае можно будет использовать код:
clipArray[nomerSectora].moveTo(xCentr, yCentr);
и т. д.


clip = clipArray[nomerSectora];
clipArray[nomerSectora].moveTo(xCentr, yCentr);
clipArray[nomerSectora].beginFill(color, 100);
clipArray[nomerSectora].lineStyle(1, 0xff0000, 100);

Для чего создавать переменную clip, если ты её потом не используешь? Что мешает писать:

clip = clipArray[nomerSectora];
clip.moveTo(xCentr, yCentr);
clip.beginFill(color, 100);
clip.lineStyle(1, 0xff0000, 100);

Kikasso
21.05.2007, 22:15
И даже так:
var mc:MovieClip = this.createEmptyMovieClip("mc"+nomerSectora,nomerSectora);
clipArray.push( mc );