Nuevo logo para Black Mass Records

He aquí el rediseño del logo para la discográfica y distribuidora coruñesa Black Mass Records. Black Mass puede ser un sello pequeño (aún), pero sus ediciones son brillantes (Funeral Bitch, Machetazo, Domains,Banished From Inferno..), y en general todas tienen un grafismo muy cuidado, ¡será un orgullo ver este logo impreso ... leer más

Asphyx- Camiseta 25 aniversario

Han pasado ya ni más ni menos que 25 años desde  la formación de los holandeses Asphyx, y esto ha coincidido con la publicación de su nuevo (y por lo que he leído, acojonante)  disco "Deathhammer" Ayer se celebró la presentación de dicho album en Holanda y hoy en Alemania. En ... leer más

Hellspawn Zine #9

Y una vez más, el Hellspawn vuelve a la carga, y aunque ya me encargué de la portada del número anterior, al bueno de Javi  Bastard parece que le gustó y ha repetido  dibujante :D La ilustración sigue la línea cronológica de las aventuras de  Mr. G, en las primeras portadas ... leer más

Glorificatio Mortis Fest

Marthyrium siguen dando cera por tierras galaicas, una vez más acompañados por los grandes Noitébrega (que por cierto, tienen nueva demo disponible vía Final Embrace Records ) y como invitados de honor los sevillanos Andhord. El sábado 26 de Mayo en la sala Filomatic de A Coruña por 5 € de ... leer más

La Congregación de insultadores de Jesucristo

Diseño para el cartel de un concierto que promete ser memorable: GRAVE DESECRATOR (Brasil), DECAPITATED CHRIST (Barcelona) y WAR-HEAD (Croacia) estaremos derrumbando la sala  Rock and Pop de Madrid el día 17 de Marzo. Y aquí el dibujo limpio: Para que veais una muestra de lo que se cocerá allí esa noche, por ... leer más

Your Creepy Design

Hoy voy a dejar un poco el autobombo para recomendaros una iniciativa del bueno de Juan Luis, el señor de la ensalada de carne. Resulta que se le ha ocurrido crear una cortinas de baño con los diseños  de algunos artistas conocidos como Luisma (guitarra de Haemorrhage y el dibujante ... leer más

 

A veces tenemos que hacer llamadas desde flash a archivos externos en un servidor y esto es un solor de cabeza a la hora de depurar. Si estos archivos son estáticos y  no hay problema, pero ¿ que pasa cuando tienes que hacer pruebas atacando a archivos php o asp en un servidor local y luego cambiar dicho servidor?
Habría que modificar todas las rutas de absoluta a relativa  cada vez que quieras testear en el server local, y eso es un tostón y pérdida de tiempo importante .


Pero hay una forma fácil de conseguir que cuando estemos testeando con el IDE de Flash (o Flash Develop o el que sea): la propiedad playerType de la clase flash.system.Capabilities. Esta propiedad puede devolvernos:

  • StandAlone, si se está reproducciendo en un reproductor ejecutable.
  • External, si se reproduce desde el IDE o desde el reproductor de flash del sistema.
  • PlugIn, si se trata de un plugin de navegador.
  • ActiveX, si se ejecuta mediante el control Active X de Internet Explorer

Vamos a poner un ejemplo, yo tengo que hacer una llamada absoluta dentro del entorno de mi programa de desarrollo para que los phps que pido me funcionen, pero cuando lo suba y pruebe desde navegador quiero que la llamada sea relativa a donde esté alojado.

La idea es declarar antes de la llamada una variable de host, que variará dependiendo de si el flash se reproduce desde el entorno de pruebas  o no

Por ejemplo:

var host:String;
if(Capabilities.playerType == "External"){
		host="http://localhost/mipagina/";
	}else{
		host="";
	}
var request:URLRequest=new URLRequest(host+"datos.php");

De esta forma no tendremos que andar cambiando las llamadas cada 2 por 3, que hacerlo en un archivo es facil, pero en un sitio completo en flash con varios .swf  puede ser un suplicio

Tags: , ,

Posted by Cesar - 31/05/11 - 0 comments

 

Hoy he me he embarcado en un interesante proyecto donde tendré que volver a mi plataforma favorita: Flash, y además con bastante libertad creativa, ya que tengo que desarrollar un microsite de minijuegos basados en dibujos animados con estética futurista, lo cual hace que mi cabeza gire a miles de revoluciones pensando en efectos de luz, movimiento, físicas , etc… las típicas cosas que te encanta hacer y jugar con ellas, trasteas y te empollas cientos de páginas sobre experimentos, pero que luego nunca vas a usar en un proyecto real… o sí!

Hoy he empezado por recordar todo lo referente a partículas, bitmapdata y este tipo de cosas con las que hacía meses…o años… que no lidiaba.
El primer experimento ha sido crear una transición de imágenes en las que estas explotan en píxeles. No voy a colgar la demo aún ya que aunque la explosión va fluidísima (incluso con imágenes grandes) la implosión ya no va tan bien, por lo que tengo que darle más vueltas.
De todas formas lo que me importaba era generar una clase de explosión de enemigos para un shoot’em up….

Y el segundo ha sido un efecto de partículas de luz para la esfera de energía de la homepage.
Sinceramente no tengo demasiado tiempo, pero tampoco me gusta utilizar código de otros si lo que quiero hacer entra dentro de mis posibilidades, por lo que este ha sido el resultado rápido y resultón:

This movie requires Flash Player 9

El código de la class es el siguiente, hecho bastante rápido, pero con un rendimiento bastante bueno, al menos en mi máquina.
Si la cosa se ralentiza siempre se pueden modificar el número de partículas (he puesto 5000, a lo bravo) o reducir el desenfoque del BlutFilter.


package xcx{
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.filters.GlowFilter;
import flash.filters.BlurFilter;
public class BMPEnergy extends MovieClip {
var bmp:Bitmap;
var bmpdata:BitmapData;
var main:MovieClip;
var particulas:Array=[];
var numparts:Number=5000;
var velocidad:Number=.6;
var maxvida:int=50;
var r:uint;
var g:uint;
var b:uint;
var a:uint;
var c:uint;
var glow:GlowFilter;
var blur:BlurFilter;
var limiteanillo:Array=[100,90];


function randomNumber(low:Number=0, high:Number=1):Number {
return Math.floor(Math.random() * (1+high-low)) + low;
}


function anima() {
for (var p:int=0; p
if (particulas[p].vida
particulas[p].x+=Math.sin(particulas[p].rot)+particulas[p].velx;
particulas[p].y+=Math.cos(particulas[p].rot)+particulas[p].vely;
particulas[p].vida++;
} else {
particulas[p].x=particulas[p].x0;
particulas[p].y=particulas[p].y0;
particulas[p].vida=0;
particulas[p].rot+=randomNumber(-1,1)
}
}
dibuja();
}


function dibuja() {
bmpdata.lock();
bmpdata.fillRect(bmpdata.rect, 0);
for (var i:int=0; i
bmpdata.setPixel32(particulas[i].x, particulas[i].y, particulas[i].color);
}
bmpdata.unlock();
}


public function init() {
bmpdata=new BitmapData(500,500,true);
bmpdata.fillRect(bmpdata.rect, 0);
for (var i:int=0; i
//color: 83d547
r=0x83;
g=0xD5;
b=0x47;
a=(Math.random())*0xFF;
c=((a << 24) | (r << 16) | (g << 8 ) | b); var p:Object={color:c,x:(Math.sin(i)*limiteanillo[0]/2)+limiteanillo[0],y:(Math.cos(i)*limiteanillo[1]/2)+limiteanillo[1],x0:(Math.sin(i)*limiteanillo[0]/2)+limiteanillo[0],y0:(Math.cos(i)*limiteanillo[1]/2)+limiteanillo[1],rot:i,muerte:randomNumber(maxvida)+5,vida:0}; if (Math.cos(i)>0) {
p.vely=randomNumber(1,velocidad);
} else {
p.vely=randomNumber(- velocidad,-1);
}
if (Math.sin(i)>0) {
p.velx=randomNumber(1,velocidad);
} else {
p.velx=randomNumber(- velocidad,-1);
}
particulas.push(p);
}
dibuja();
bmp=new Bitmap(bmpdata);
addChild(bmp);
setInterval(anima,40);
}


public function BMPEnergy() {
init();
glow=new GlowFilter(0x65af2f,2,6,6,2)
blur=new BlurFilter(1.6,1.6,2)
this.filters=[blur,glow]
}
}
}

Tags: , ,

Posted by Cesar - 07/02/11 - 2 comments