| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| habs vergessen Registriert seit: Feb 2006
Beiträge: 990
| [stuff]text firewall
hallo zusammen, und weil urlaub ohne scripten garnicht geht, hier direkt mal ein kleiner texteffekt - "text firewall". das ganze ohne perlinNoise sondern über ein palettenMapping ...was von der performance her bei mir echt mehr hergibt, und bei euch? (FEEDBACK erwünscht!!!) ![]() Viel Spaß beim ansehen & modifizieren... ansehen Variation davon: ansehen und runter damit Code:
/////////////////////////////////////////////////////
// text firewall
// author : frank reitberger
// site : http://www.dasprinzip.com
// copyright 2006
/////////////////////////////////////////////////////
// --------------------------------------------------------------------------------------------------
stop();
// --------------------------------------------------------------------------------------------------
///////////////////////////////////
// import flash filter classes
///////////////////////////////////
import flash.display.BitmapData;
import flash.filters.*;
import flash.geom.*;
// --------------------------------------------------------------------------------------------------
///////////////////////////////////
// setup flow field global vars
///////////////////////////////////
var flt = new flash.filters.BlurFilter(4, 16);
var colRange:Number = 256;
var colArr:Array = new Array(colRange);
var colMap:Array = new Array(colRange);
var n:Number = 1;
var txtPointer:Number = 0;
var txtArr:Array = new Array("PWD´s","TEXT","FIREWALL");
_quality = "LOW";
this._lockroot = true;
// --------------------------------------------------------------------------------------------------
///////////////////////////////////
// configure canvas
///////////////////////////////////
function initStage() {
/////////////////////
// setup efx stage
_root.efxMapping = new BitmapData(300, 300, false, 0);
_root.efxStage = new BitmapData(300, 256, false, 0);
_root.createEmptyMovieClip("txt_mc", _root.getNextHighestDepth());
_root["txt_mc"].createTextField("txt", this.getNextHighestDepth(), 0, 0, 300, 50);
_root.createEmptyMovieClip("efxClip", _root.getNextHighestDepth());
_root["efxClip"].attachBitmap(_root.efxStage, this.getNextHighestDepth());
_root["txtHeadline"].swapDepths(_root.getNextHighestDepth());
_root["txtInput"].swapDepths(_root.getNextHighestDepth());
/////////////////////
// paint efx
var i:Number = 0;
while (i < colRange) {
colArr[i] = 0;
i++;
}
var i:Number = 0;
while (i < 256) {
colMap[i] = rgbRange(i / 3, 255, Math.min(255, i * 2));
i++;
}
/////////////////////
// paint efx
paint();
}
// --------------------------------------------------------------------------------------------------
///////////////////////////////////
// setup color range
///////////////////////////////////
function rgbRange(h, sl, l) {
var setR,setG,setB;
var r = h / 255;
var g = sl / 255;
var b = l / 255;
var tmpCol = b <= 0.500000 ? (b * (1 + g)) : (b + g - b * g);
if (tmpCol <= 0) {
var setR:Number = 0;
var setG:Number = 0;
var setB:Number = 0;
} else {
var colB:Number = b + b - tmpCol;
var bCache:Number = (tmpCol - colB) / tmpCol;
var r:Number = r * 26;
var colValue:Number = Math.floor(r);
var rCache:Number = r - colValue;
var gCache:Number = tmpCol * bCache * rCache;
var colG:Number = colB + gCache;
var colR:Number = tmpCol - gCache;
switch (colValue)
{
case 0:
{
setR = tmpCol;
setG = colG;
setB = colB;
break;
}
case 1:
{
setR = colR;
setG = tmpCol;
setB = colB;
break;
}
case 2:
{
setR = colB;
setG = tmpCol;
setB = colG;
break;
}
case 3:
{
setR = colB;
setG = colR;
setB = tmpCol;
break;
}
case 4:
{
setR = colG;
setG = colB;
setB = tmpCol;
break;
}
case 5:
{
setR = tmpCol;
setG = colB;
setB = colR;
break;
}
}
}
return(setR * 255 << 16 | setG * 255 << 8 | setB * 255);
}
// --------------------------------------------------------------------------------------------------
///////////////////////////////////
// paint flame thrower
///////////////////////////////////
function paint() {
_root.onEnterFrame = function () {
var i:Number = 0;
while (i < 2) {
_root["efxMapping"].applyFilter(_root["efxMapping"], new flash.geom.Rectangle(0, 0, 300, 300), new flash.geom.Point(0, -2), flt);
var j:Number = 0;
while (j < 8) {
_root["efxMapping"].fillRect(new flash.geom.Rectangle(Math.random() * 280, 289, 20, 3), 16777215);
if (n++ % 256 == 0) {
var geomMatrix = new flash.geom.Matrix();
geomMatrix.translate(40, 196);
_root["txt_mc"].txt.text = txtArr[txtPointer];
_root["txt_mc"].txt.setTextFormat(new TextFormat("Arial", 44, 16777215));
_root["efxMapping"].draw(_root["txt_mc"], geomMatrix);
txtPointer++;
if (txtPointer >= txtArr.length) {
txtPointer = 0;
}
}
j++;
}
i++;
}
_root.efxStage.paletteMap(_root["efxMapping"], new flash.geom.Rectangle(0, 20, 300, 256), new flash.geom.Point(0, 0), colMap, colArr, colArr, null);
}
}
// --------------------------------------------------------------------------------------------------
///////////////////////////////////
// setup textfield listener
///////////////////////////////////
var lookForInput:Object = new Object();
lookForInput.enter= function() {
_root["txtArr"].push(_root["txtInput"].text);
_root["txtInput"].text = "";
return;
}
this["txtInput"].addEventListener("enter", lookForInput);
// --------------------------------------------------------------------------------------------------
///////////////////////////////////
// init
///////////////////////////////////
initStage(); Geändert von pwdVergesser (09-10-2006 um 08:40 Uhr) |
| | |
| | #2 (permalink) |
| \x3a\x6f\x29 Registriert seit: Apr 2004 Ort: paris
Beiträge: 806
| Schon mal wo gesehen. Trotzdem schön und performant. Ich hoffe du hast es trotzdem selbst gemacht.
|
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |