Форум 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?


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

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