Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Как нарисовать точку? (http://www.flasher.ru/forum/showthread.php?t=58487)

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

Вложений: 1
Цитата:

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

sergwizard 22.05.2004 11:57

Вложений: 1
Э-э-э, ребятушки, это у вас странное небо. А меня оно вот такое.
Настройки: 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%


Часовой пояс GMT +4, время: 15:35.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.