Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Flash 8 учимся... я про себя :) (http://www.flasher.ru/forum/showthread.php?t=73208)

Andromed 18.12.2005 15:28

кстати немножко не в тему я тут поковырялся нашел исходники RFE быстро подправил чтобы работало с OpenGL 1.5 2.0, также чтобы коректно экспортируемый скрипт работал в 8-ке (там зарезервруемое слово появилось transform)... вопрос такой нет желания держать постоянную ссылку ? на вашем сайте (когда я его писал флешер ру был в ауте, пришлось выкладывать на флештиачер).. банер и ссылку в прогармме пихну (главное наличие картинки 190*75) Если есть желание можно связаться по почте :)

Andromed 19.12.2005 17:22

еще один пример пиксельный огонь отличие от лого в том что цвет пикселей берется из програмно созданного градиента
средствами getPixel32

пример тут
http://www.vipsauna.com/test/pixel_fire.html
исходник тут
http://www.vipsauna.com/test/pixel_fire.fla

Код:


Stage.scaleMode = 'noScale';
this.createEmptyMovieClip("gradient", 2);
import flash.geom.*;
var fillType:String = "linear";
var colors:Array = [0xFF2222, 0xDFAA31, 0xB9594F, 0xAEAEAE, 0x000000];
var alphas:Array = [100, 80, 70, 50, 90];
var ratios:Array = [0, 30, 50, 70, 0xFF];
var matrix:Matrix = new Matrix();
matrix.createGradientBox(300, 1, 0, 0, 0);
var spreadMethod:String = "pad";
gradient.beginGradientFill(fillType, colors, alphas, ratios, matrix, spreadMethod);
gradient.moveTo(0, 0);
gradient.lineTo(300, 0);
gradient.lineTo(300, 5);
gradient.lineTo(0, 5);
gradient.lineTo(0, 0);
gradient.endFill();
var gradientCanvas = new flash.display.BitmapData(300, 5, false, 0xFFCC0000);
gradientCanvas.draw(gradient);
/////////////////////////////////////////////////////////////////
this.createEmptyMovieClip("fire", 1);
var fireConvas = new flash.display.BitmapData(300, 300, true, 0);
fire.attachBitmap(fireConvas, 1);
var fade = new flash.geom.ColorTransform();
fade.alphaMultiplier = 0.8;
var fireDiametr = 40;
var fireFading = 10;
var grav = -0.2;
var maxparticles = 220;
var particleNum = 4;
var particleglowcolor = 0xFFCC00;
var particles = new Array();
var glow = new flash.filters.GlowFilter(particleglowcolor, 5, 15, 15);
var floor = 280;
fire.filters = [glow];
fire.blendMode = "add";
onEnterFrame = function () {
        for (var i = particleNum; i>=0; i--) {
                particles.unshift(createParticle(Stage.width/2+40*(Math.random()-0.5), floor, 0, random(1)+1));
        }
        if (particles.length>maxparticles) {
                particles.length = maxparticles;
        }
        for (i in particles) {
                currparticle = particles[i];
                var particlecolor = 0xFFFF6633;
                var particlecolorAlpha = 0x50FF6633;
                var pixelW = (floor-currparticle.y)/0.7;
                if (pixelW>300) {
                        pixelW = 300;
                }
                particlecolor = gradientCanvas.getPixel32(pixelW, 0);
                fireConvas.setPixel32(currparticle.x, currparticle.y, particlecolor);
                fireConvas.setPixel32(currparticle.x+1, currparticle.y, particlecolor);
                fireConvas.setPixel32(currparticle.x-1, currparticle.y, particlecolor);
                fireConvas.setPixel32(currparticle.x, currparticle.y-1, particlecolor);
                fireConvas.setPixel32(currparticle.x, currparticle.y+1, particlecolor);
                moveParticle(currparticle);
        }
        fireConvas.colorTransform(fireConvas.rectangle, fade);
};
function createParticle(x, y, angle, power) {
        var prt = {};
        prt.x = x;
        prt.y = y;
        angle = -angle-Math.PI+Math.PI*Math.random()*2;
        power = -power/2+power+0.5*power*Math.random();
        prt.vx = Math.cos(angle)*power;
        prt.vy = -Math.sin(angle)*power;
        return prt;
}
function moveParticle(particle) {
        particle.x += particle.vx;
        particle.y += particle.vy;
        var fl = fireDiametr-(floor-particle.y)/fireFading;
        var right = Stage.width/2+fl;
        var left = Stage.width/2-fl;
        if (particle.x>right) {
                particle.x = right;
                particle.vx *= -Math.random()*5;
        }
        if (particle.x<left) {
                particle.x = left;
                particle.vx *= -Math.random()*5;
        }
        particle.vy += grav;
}

)

Ion 19.12.2005 17:56

Крутизна подобных эффектов в том, что они не теряют красоты при низком качве, что позволяет повысить производительность

Andromed 19.12.2005 18:38

это да.. :) ради этого все и затевалось все переходим в low режим :), вообщето дело не в самих эффектах.. на сколько они красивы или нет, это второстепенно, просто расматриваются разные фишки типа копирования мувиклипа в bmpData и использование его содержмиого .. и т.д. и т.п., эффект это просто для наглядности.. было бы глупо взять мувик скопировать его в картинку и помеянть пиксели местами типа красный на черный и прочее.. хотя можно впринципе описать разные фильтры как в фотошопе.. анпрмире сепия сделать вроде просто будет :) сохранить цвет в матрицу colorTransform
изменить все значения Offset на темножелтый а все Multiplier оставить без изменения .. это так мысли вслух :)

c++ 19.12.2005 19:42

Сделал светящимися фейерверками надпись небольшую - прикольно :)
Захотел её в существующую flash сцену loadMovie...

Загружается, но бежит точка, но ни надписи ни эффектов... :(
Если в первом кадре сцены пишем "_lockroot = true;", то рисуется ок, но эффект брызг находится в самом низу сцену, а не около рисующей точки... :(

Что надо исправить?

MOHCTEP 20.12.2005 05:46

Мопть! :eek:
Я в осадке, как тот дождик! :D
Andromed - сплошные регардсы тебе! И спасибо!

Andromed 20.12.2005 11:08

да не зачто :)...

motor4ik 20.12.2005 11:36

лнтающие какашки супер, главное алгоритм, а кому какие какашки летающие нравятся, сам доделает :=) Андромед респект :=)

c++ 20.12.2005 12:48

=Andromed=

Сделал светящимися фейерверками надпись небольшую - прикольно
Захотел её в существующую flash сцену loadMovie...

Загружается, бежит точка, но ни надписи ни эффектов... :(
Если в первом кадре сцены пишем "_lockroot = true;", то рисуется ок, но эффект брызг находится в самом низу сцену, а не около рисующей точки... :(

Что надо исправить, подскажите, пожалста?

motor4ik 20.12.2005 15:29

уууу...с с+++ все стало на свои места, все ясно :=)


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

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