PDA

Просмотр полной версии : Как нарисовать точку?


juice
21.05.2004, 19:08
Надобно мне нарисовать звездное небо, да чёбы красивое было - ну типа скопления малюпусеньких звёздочек были, и большие тоже присутствовали, чуть-чуть разных цветов и размеров. Нарисовал все это руками (задолбался конечно) - ролик увеличился на 20 кб. Это критично. Решил попробовать прикладным программным интерфейсом рисования убить зверя, намного удобнее будет. Все там нашел - и прямые и кривые и заливка такая-сякая, а точки нету!
this.lineStyle(1, 0xFFFFFF, 50);
this.moveTo(0,0);
this.lineTo(0,0);
Этот код рисует дулю, полупрозрачную :)

juice
21.05.2004, 19:19
Нашел оригинальное решение:
this.lineStyle(1, 0xFFFFFF, 100);
this.moveTo(0,0);
this.lineTo(0.1,0.1);
А существуют ли не оригинальные? И еще... Уменьшить тольщину линии меньше 1 можно?
this.lineStyle(0.5, 0xFFFFFF, 100) эквивалентно
this.lineStyle(1, 0xFFFFFF, 100);

opex
21.05.2004, 19:32
Вот те функция рисует пиксель задоного радиуса, а нет диаметра :) минимальный диаметер .8 , с центром в пересичении деоганалей. Во флеш нет встроеной функции точки , да она и не нужна, так же как и circle и square

Object.prototype.pointTo = point;
function point(x, y, rgb, alpha, diameter) {
m = diameter/2;
this.lineStyle(0, 0x000000, 0);
this.beginFill(rgb, alpha);
this.moveTo(x-m, y-m);
this.lineTo(x+m, y-m);
this.lineTo(x+m, y+m);
this.lineTo(x-m, y+m);
this.endFill();
}
for (i=0; i<200; i++) {
_root.pointTo(random(300), random(300), 0xFFFFFF, 100, 1);
}

Monstrito
21.05.2004, 19:48
Не оригинальных способов, скорее всего, нет, но чтобы ролик не увеличивался, сделай звёздочку символом и дублируй его N раз.

Ели хочешь поизвращаться можешь сделать это программно:

for (k=1; k<1000; k++) {
newname++;
duplicateMovieClip("_root.star", newname, newname);
setProperty(newname, _x, random(500));
setProperty(newname, _y, random(500));
}

;)

sergwizard
21.05.2004, 21:01
Брось этот код в первый фрейм пустого мувика. Это все будет весить меньше килобайта.
this.createEmptyMovieClip("StarSky", ++depth)
with (StarSky) {
colors = [0x000033, 0x000066];
alphas = [100,100];
ratios = [0, 100];
matrix = {a:0, b:450, c:0, d:300, e:0, f:0, g:0, h:300, i:0};
beginGradientFill("linear", colors, alphas, ratios, matrix);
lineTo(550,0); lineTo(550,400); lineTo(0,400)
endFill()
}
StarSky.createEmptyMovieClip("Star0", ++depth)
with (StarSky.Star0){
beginFill(0xFFFFFF,100)
lineTo(1,10)
lineTo(0,20)
lineTo(-1, 10)
endFill()
}
for(i=1; i<150; i++) {
duplicateMovieClip(StarSky.Star0,"Star"+i, ++depth)
StarSky["Star"+i]._yscale = 10
StarSky["Star"+i]._alpha = 100-random(50)
StarSky["Star"+i]._x = random(Stage.width)
StarSky["Star"+i]._y = random(Stage.height-150)
}
StarSky.Star1._x=StarSky.Star0._x;
StarSky.Star1._y=StarSky.Star0._y;
StarSky.Star1._xscale=500;
StarSky.Star0.onEnterFrame = function(){
with (StarSky.Star0){
if (!flag) {
_root.StarSky.Star1._alpha=_alpha-=10
if(_alpha<0) {flag=true; _root.StarSky.Star1._x=(_x = random(Stage.width/2)); _root.StarSky.Star1._y=10+(_y = random((Stage.height)/3))}
}else{
_root.StarSky.Star1._alpha=_alpha+=10
if (_alpha>100) {flag = false}
}
}}

opex
21.05.2004, 21:55
Странное у тебя небо sergwizard :)

sergwizard
22.05.2004, 00:27
Да? А что в нем странного?

opex
22.05.2004, 01:45
Да звездочки по одной появляются. Ощющение такие как буто там спутники взрываются:)

Штрек
22.05.2004, 02:08
Оригинал написал(а) opex
Да звездочки по одной появляются. Ощющение такие как буто там спутники взрываются:)
Это террорист Рябов подрывает. :D

sergwizard
22.05.2004, 02:53
орех, сделай-ка скриншот. Интересно посмотреть, как ты это все видишь? Почему ты видишь звезды только по одной?
2Штрек
А причем здесь nuran?

Штрек
22.05.2004, 04:23
Оригинал написал(а) sergwizard

2Штрек
А причем здесь nuran?
Ну так он тут на Флэшере главный террорист, типа Саддама. :D

Sanik
22.05.2004, 11:09
Ну так он тут на Флэшере главный террорист, типа Саддама.
Смешно... :p

Sanik
22.05.2004, 11:32
орех, сделай-ка скриншот. Интересно посмотреть, как ты это все видишь? Почему ты видишь звезды только по одной?
sergwizard Я конечно не орех, но скриншотик посмотри... Странное небо... :)

sergwizard
22.05.2004, 11:57
Э-э-э, ребятушки, это у вас странное небо. А меня оно вот такое.
Настройки: SVGA Radeon 9200 CE, 128 Мгб, 1024Х728, 32 бит

Sanik
22.05.2004, 12:08
Хех... Что ж, поздравляю тебя... Только на Моей nVidia GeForce Ti4200 128Mgb 1024x768 32 бит, такого не увидишь... Жаль... :) Придется juice вместе со своим небом комплектовать поставку Radeon 9200 CE для каждого, конечного пользователя... ;) :D

opex
22.05.2004, 12:43
Дело тут не в железе, правдо я затрудняюсь сказать в чем :)
Но каждому своё небо. У меня допустим получилось так.


this.createEmptyMovieClip("Sky", 0);
with (Sky) {
linestyle(0, 0x000000, 0);
beginFill(0x000000, 100);
moveTo(0, 0);
lineTo(Stage.width, 0);
lineTo(Stage.width, Stage.height);
lineTo(0, Stage.height);
lineTo(0, 0);
endFill();
}
for (i=0; i<300; i++) {
x = random(Stage.width);
y = random(Stage.height);
this.createEmptyMovieClip("star"+i, i+1);
this["star"+i]._alpha = random(70)+30;
with (this["star"+i]) {
linestyle(0, 0x000000, 0);
beginFill(0xFFFFFF, 100);
moveTo(x, y);
lineTo(x+1, y);
lineTo(x+1, y+1);
lineTo(x, y+1);
lineTo(x, y);
endFill();
}
}
function StarryA() {
i = random(300);
m = random(70)+30;
for (c=100; c>m; c--) {
_root["star"+i]._alpha = c;
}
}
function StarryA() {
i = random(300);
m = random(70)+30;
for (c=0; c<m; c++) {
_root["star"+i]._alpha = c;
}
}
setInterval(StarryA, 200);
setInterval(StarryB, 200);

Может не так интерактивно как у Sergwizard'a, хотя слово инетрактивно здесь не подходит, кароче анимации у меня меньше но эффект звездного неба ощущается более полно.
Кто хочет увидеть копируйте этот код в первый кадр сцены, ну или мувика.

sergwizard
22.05.2004, 13:03
А, я понял, в чем дело: карта здесь не причем. Просто, вы работаете с Flash MX 2004, и в настройках выставили "для 7 плеера". Измените нестройку, сделайте для 6-го. И вы увидите небо в алмазах. :)

opex
22.05.2004, 13:26
Да страно вроде все должно работать и там и там но работает только в 6 :confused:

Sanik
22.05.2004, 13:49
Ну вот,теперь куль!!! А то карта... :)

Nox Noctis
22.05.2004, 18:10
у меня с небом всё намально...
Matrox Parhelia 128mb, 1600x1200, 32bit :D

silin
22.05.2004, 23:44
Оригинал написал(а) opex
Да страно вроде все должно работать и там и там но работает только в 6 :confused:
для семерки надо depth=0;в первой строке (иначе она NaN так и остается)

Dindin
23.05.2004, 22:27
Надо астрономам знакомым подкинуть тему для монографии - "зависимость картины звёздного неба от количества памяти видеокарты" :)

nuran
24.05.2004, 09:10
Пауль Нив извращается
http://neave.com/lab/space/
Кликните Planetarium.

Sanik
24.05.2004, 10:17
Оригинал написал(а) nuran
Пауль Нив извращается
http://neave.com/lab/space/
Кликните Planetarium.
Ипануцца... Интересно,это реальный вид, или от фонаря...

juice
25.05.2004, 00:15
уже 10 комплектов готово :cool:

juice
25.05.2004, 00:18
<<<(про видеокарты)

nuran
25.05.2004, 10:27
Оригинал написал(а) Sanik

Ипануцца... Интересно,это реальный вид, или от фонаря...

Реальный на все 100%