Este prototipo devuelve la primera posición que encuentra del parametro pasado dentro del array.
Actionscript:
Array.prototype.firstIndexOf = function(n) {
var l = this.length;
for (var i = 0; i <l; i++) {
if (this[i] == n) {
return i;
}
}
return -1;
};
//Uso:
mi_array=["a","b","c","d","e","f"];
trace(mi_array.firstIndexOf("d"));
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
array
Un simple prototipo para desordenar una array aleatoriamente.
Actionscript:
Array.prototype.randomize = function() {
var l = this.length;
for (var i = 0; i <l; i++) {
var alea = Math.ceil(Math.random() * l);
var tmp = this[i];
this[i] = this[alea];
this[alea] = tmp;
}
};
//Uso:
mi_array=[1,2,3,4,5,6,7];
mi_array.randomize();
trace(mi_array);
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
array
Este prototipo pasa a blanco y negro el movieClip sobre el que se aplica. La primera versión sencillamente desatura, y la segunda crea un duplicado sobre el mc original para tener disponible el item original en color, para por ejemplo un rollOver ;)
Actionscript:
import flash.filters.ColorMatrixFilter;
MovieClip.prototype.desaturate = function():Void {
var bn_filter:ColorMatrixFilter = new ColorMatrixFilter([0.3, 0.59, 0.11, 0, 0, 0.3, 0.59, 0.11, 0, 0, 0.3, 0.59, 0.11, 0, 0, 0, 0, 0, 1, 0]);
this.filters = [bn_filter];
};
//Uso:
mc.desaturate();
Actionscript:
import flash.filters.ColorMatrixFilter;
MovieClip.prototype.desaturateAndDuplicate = function():Void {
var bn_filter:ColorMatrixFilter = new ColorMatrixFilter([0.3, 0.59, 0.11, 0, 0, 0.3, 0.59, 0.11, 0, 0, 0.3, 0.59, 0.11, 0, 0, 0, 0, 0, 1, 0]);
var bmp = new flash.display.BitmapData(this._width, this._height, true, 0x00000000);
var bn:MovieClip = this._parent.createEmptyMovieClip("bn_mc", 2);
bn.attachBitmap(bmp,0);
bmp.draw(this);
bn.filters = [bn_filter];
this._visible = false;
};
//Uso:
mc.desaturateAndDuplicate();
Imprescindible haber importado el filtro ColorMatrixFilter.
Este sencillo prototipo se encarga de convertir un movieclip en imagen con la propiedad smooth activada para poder escalarlo sin ese horrible efecto pixelado. Combinado con MovieClipLoader es especialmente útil para escalar imágenes externas cargadas dinámicamente con un poco de dignidad.
Actionscript:
MovieClip.prototype.smoothBitmap = function():Void {
var bmp = new flash.display.BitmapData(this._width, this._height, true, 0x000000);
bmp.draw(this);
this.attachBitmap(bmp,0,"auto",true);
};
//Uso:
var dummyholder:MovieClip = this.createEmptyMovieClip("holder", this.getNextHighestDepth());
var mcl:MovieClipLoader = new MovieClipLoader();
var mcl_ls:Object = new Object();
mcl.addListener(mcl_ls);
mcl_ls.onLoadInit = function(target:MovieClip):Void {
target.smoothmeslowlyplease();
};
mcl.loadClip("http://drusunlimited.com/portfolio/img/tarjeta.png",dummyholder);
Ojo con el consumo de memoria.
Este prototipo simplifica el manejo de coordenadas de movieClips anidados, al devolver la posicion absoluta del clip.
Actionscript:
MovieClip.prototype.globalize = function() {
var sum:Array = new Array(this._x, this._y);
var parent:MovieClip = this._parent;
while (parent) {
sum[0] += parent._x;
sum[1] += parent._y;
parent= parent._parent;
}
return sum;
};
//Uso:
trace(my_mc.globalize()[0]); //devuelve la coordenada _x absoluta
trace(my_mc.globalize()[1]); //devuelve la coordenada _y absoluta
Este prototipo es uno de tantos que valida emails:
Actionscript:
String.prototype.isEmail = function() {
if (!this) {
return false;
}
var iChars = "*|,\":<>[]{}`';()&$#% ";
for (var i = 0; i<this.length; i++) {
if (iChars.indexOf(this.charAt(i)) != -1) {
return false;
}
}
if (this.indexOf("@") == -1) {
return false;
}
if (this.indexOf(".") == -1) {
return false;
}
return true;
};
//Uso:
mail="jaja@pua.es";
trace(mail.isEmail());
Este protipo dibuja un marco, del grosor definido por borderThickness, alrededor del mc sobre el que se aplica (obj_mc). Si el valor de borderThickness es negativo, el marco se aplica hacia fuera.
Actionscript:
MovieClip.prototype.drawFrame = function(borderThickness:Number, borderColor:Number) {
this.p = this.getBounds();
var frame_mc:MovieClip = this.createEmptyMovieClip("frame_mc", 0);
frame_mc.beginFill(borderColor, 100);
frame_mc.moveTo(this.p.xMin+borderThickness, this.p.yMin+borderThickness);
frame_mc.lineTo(this.p.xMax-borderThickness, this.p.yMin+borderThickness);
frame_mc.lineTo(this.p.xMax-borderThickness, this.p.yMax-borderThickness);
frame_mc.lineTo(this.p.xMin+borderThickness, this.p.yMax-borderThickness);
frame_mc.lineTo(this.p.xMin+borderThickness, this.p.yMin+borderThickness);
frame_mc.moveTo(this.p.xMin, this.p.yMin);
frame_mc.lineTo(this.p.xMin, this.p.yMax);
frame_mc.lineTo(this.p.xMax, this.p.yMax);
frame_mc.lineTo(this.p.xMax, this.p.yMin);
frame_mc.endFill();
};
//Uso: borderThickness,borderColor
//un borderThickness positivo enmarca hacia dentro
//un borderThickness negativo enmarca hacia fuera
obj_mc.drawFrame(15, 0x666666);
obj2_mc.drawFrame(-15, 0x999999);
Mi versión de los tweens, usando las ecuaciones de Robert Penner.
Actionscript:
MovieClip.prototype.easeInOut = function(t:Number, b:Number, c:Number, d:Number):Number {
if ((t /= d/2)<1) {
return c/2*t*t*t*t*t+b;
}
return c/2*((t -= 2)*t*t*t*t+2)+b;
};
MovieClip.prototype.myTween = function(prop, destino, duracion) {
var dummy:MovieClip = this._parent.createEmptyMovieClip("dummy"+random(5000), this._parent.getNextHighestDepth());
este = this;
dummy.propini = this[prop];
dummy.dx = destino-this[prop];
dummy.t = 5;
dummy.duracion = duracion;
dummy.onEnterFrame = function() {
if (this.t++<duracion) {
este[prop] = este.easeInOut(this.t, this.propini, this.dx, this.duracion);
} else {
delete this.onEnterFrame;
removeMovieClip(this);
}
};
};
//Uso:
_root.onMouseDown = function() {
obj_mc.myTween("_x", _root._xmouse, 50);
obj_mc.myTween("_y", _root._ymouse, 50);
};
¿necesita alguna explicación?
Actionscript:
MovieClip.prototype.drawCircle = function(radius, x, y, col) {
var angleDelta = Math.PI/4;
var ctrlDist = radius/Math.cos(angleDelta/2);
var angle = 0;
var rx, ry, ax, ay;
this.beginFill(col, 100);
this.moveTo(x+radius, y);
for (var i = 0; i<8; i++) {
angle += angleDelta;
rx = x+Math.cos(angle-(angleDelta/2))*(ctrlDist);
ry = y+Math.sin(angle-(angleDelta/2))*(ctrlDist);
ax = x+Math.cos(angle)*radius;
ay = y+Math.sin(angle)*radius;
this.curveTo(rx, ry, ax, ay);
}
this.endFill();
};
Este prototipo crea un marco del grosor y color definidos en sus parámetros sobre el movieClip en que se aplica. También asigna métodos onRollOver y onRollOut a dicho movieClip para escalar el grosor del marco.
Requiere la librería de
Laco,
Zeh, o similar.
Descargable frameOver prototype
Actionscript:
#include "lmc_tween.as"
MovieClip.prototype.frameOver = function(grosor,color) {
var over:MovieClip = this.createEmptyMovieClip("over", 1);
var l:MovieClip = over.createEmptyMovieClip("l", 1);
var escalax = (this._width+grosor*2)/100*grosor;
var escalay = this._height/100*grosor*2;
var w:Number = this._width;
var h:Number = this._height;
l.lineStyle(0, 0x000000, 0);
l.beginFill(color, 100);
l.moveTo(0, -h/2);
l.lineTo(grosor, -h/2);
l.lineTo(grosor, h/2);
l.lineTo(0, h/2);
l.lineTo(0, -h/2);
l.endFill();
l._y = h/2;
l._xscale = .1;
var t:MovieClip = l.duplicateMovieClip("t", 2, {_x:w/2, _y:0, _rotation:90});
var r:MovieClip = l.duplicateMovieClip("r", 3, {_x:w, _y:h/2, _rotation:180});
var b:MovieClip = l.duplicateMovieClip("b", 4, {_x:w/2, _y:h, _rotation:270});
t._yscale = b._yscale=w/h*100;
this.onRollOver = function() {
l.tween("_xscale", 100, 1);
t.tween("_xscale", 100, 1);
r.tween("_xscale", 100, 1);
b.tween("_xscale", 100, 1);
};
this.onRollOut = function() {
l.tween("_xscale", .1, .5);
t.tween("_xscale", .1, .5);
r.tween("_xscale", .1, .5);
b.tween("_xscale", .1, .5);
};
};
//Uso:
obj_mc.frameOver(15,0x666666);
Prototipo que extrae una subcadena de palabras completas de la cadena sobre la que se aplica.
Útil para crear entradillas de artículos más extensos.
Actionscript:
String.prototype.entradilla = function(ini,fin) {
var texto= this.substr(ini,fin);
var palabras_ar = texto.split(" ");
var entradilla = "";
for(var i=0; i<(palabras_ar.length-1);i++) {
entradilla += palabras_ar[i] + " ";
}
entradilla = entradilla.substr(0,entradilla.length-1);
return entradilla;
};
Con este sencillo prototipo eliminamos los molestos y habituales dobles retornos de carro de un archivo de texto externo cargado dinámicamente.
Actionscript:
String.prototype.cleanReturns = function() {
return this.split("\n\r").join("\n");
};
//Uso:
textbox.text = this.txt.cleanReturns();
Enlaces relacionados: No related posts, | Tags:
actionscript,
texto,
prototipo,
String
Esta función javascript, llamada desde la película flash, empuja la variable "url" con el document.location del navegador a la película identificada como "flash". Muy útil para evaluar parámetros pasados como querys en la url.
JavaScript:
<script language="javascript">
<!--
function getFlashMovieObject(movieName){
if (window.document[movieName]) {
return window.document[movieName];
}if (navigator.appName.indexOf("Microsoft Internet")==-1) {
if (document.embeds && document.embeds[movieName])
return document.embeds[movieName];
}else{ // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
return document.getElementById(movieName);
}
}
function flashLoad(){
var flashMovie = getFlashMovieObject("flash");
flashMovie.SetVariable("url", document.location);
flashMovie.Play();
}
-->
</script>
Actionscript:
//Uso
stop();
getURL("javascript:FlashLoaded()");
Si viera esto Laco probablemente me cortaría la coleta, pero el otro día estaba ajustando el peso de unas creatividades y no tuve más remedio que sacar Kb de donde no había eliminando los métodos que no me resultaban extrictamente necesarios de la clase "tween" de Laco. Esto fue lo que quedo.
Actionscript:
if (_global.$tweenManager == undefined) {
_global.$tweenManager = new zigo.tweenManager();
} else {
_global.$tweenManager.playing = false;
}
var Mp = MovieClip.prototype;
Mp.addListener = function() {
if (!this._listeners) {
AsBroadcaster.initialize(this);
}
this.addListener.apply(this, arguments);
};
ASSetPropFlags(Mp, "addListener", 1, 0);
// == core methods ==
Mp.tween = function(props, pEnd, seconds, animType, delay, callback, extra1, extra2) {
if (typeof (props) == "string") {
props = [props];
}
if (pEnd.length == undefined) {
pEnd = [pEnd];
}
// parse animtype to reference to equation function
switch (typeof (animType)) {
case "string" :
//string
animType = animType.toLowerCase();
if (eqf == undefined) {
// set default tweening equation
var eqf = com.robertpenner.easing.Expo.easeInOut;
}
break;
case "function" :
// function
var eqf = animType;
break;
case "object" :
// object from custom easing
if (animType.ease != undefined && animType.pts != undefined) {
var eqf = animType.ease;
extra1 = animType.pts;
} else {
var eqf = com.robertpenner.easing.Expo.easeInOut;
}
break;
default :
var eqf = com.robertpenner.easing.Expo.easeInOut;
}
// parse callback function
if (_global.$tweenManager.autoStop) {
// automatic removing tweens as in Zeh proto
_global.$tweenManager.removeTween(this, props);
}
if (delay>0) {
_global.$tweenManager.addTweenWithDelay(delay, this, props, pEnd, seconds, eqf, callback, extra1, extra2);
} else {
_global.$tweenManager.addTween(this, props, pEnd, seconds, eqf, callback, extra1, extra2);
}
};
ASSetPropFlags(Mp, "tween", 1, 0);
delete Mp;
Muy criticable, lo sé, debi hacerme mi propia versión pero el tiempo es el que hay, y al igual que con los Kb, lo acabas sacando de donde no hay.
Este prototipo crea un efecto de reflejo del movieClip sobre el que se aplica, duplicandolo, volteandolo y aplicándole un degradado lineal que lo funde sobre un fondo blanco.
Desgraciadamente, si la imagen es cargada dinámicamente, también hay que cargarla en el duplicado, ya que se duplica el movieClip en su estado inicial (shit!).
Actionscript:
//http:drusunlimited.com
MovieClip.prototype.reflex = function() {
var reflejo:MovieClip = this.duplicateMovieClip(this._name+"reflejo", this.getDepth()+100);
reflejo._yscale = -100;
reflejo._y = this._y+this._height*2;
var degrade:MovieClip = reflejo.createEmptyMovieClip("degrade_mc", 1);
degrade.fillType = "linear";
degrade.colors = [0xFFFFFF, 0xFFFFFF];
degrade.alphas = [100, 80];
degrade.ratios = [150, 255];
degrade.matrix = {matrixType:"box", x:0, y:0, w:this._width, h:this._height, r:90/180*Math.PI};
with (degrade) {
beginGradientFill(fillType, colors, alphas, ratios, matrix);
lineStyle(5, 0xFF00FF, 0);
moveTo(0, 0);
lineTo(this._width, 0);
lineTo(this._width, this._height);
lineTo(0, this._height);
moveTo(0, 0);
endFill();
}
};
//Uso:
obj_mc.reflex();
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
efecto,
MovieClip
Permite subir o bajar el volumen de un sonido gradualmente hasta el volumen deseado, en el tiempo establecido por el parámetro "duration".
Actionscript:
Sound.prototype.fadeVolume = function(level, duration) {
var me = this;
if (duration == undefined) {
duration = 1000;
}
clearInterval(me.intervalID);
me.intervalID = setInterval(function () {
me.vol = me.getVolume();
if (level-me.vol>0) {
me.inc = 1;
} else {
me.inc = -1;
}
if (Math.abs(me.vol-level)>0) {
me.setVolume(me.vol+me.inc);
} else {
clearInterval(me.intervalID);
}
}, duration/100);
};
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
Sound,
fade,
volume
Este ejemplo es una ampliación del publicado por Ricardo en c-trick.
Un swf "libreria" que carga dinámicamente nos permite compartir fuentes entre distintos swf sin necesidad de importar las fuentes a todos los archivos, con la consecuente reducción de tamaño.
Mi humilde aportación ha sido añadir un controlador de carga (MovieClipLoader) para asegurarnos de que la librería con la fuente está cargada a la hora de crear campos de texto dinámicamente.
sharedFonts.rar
Enlaces relacionados: No related posts, | Tags:
actionscript,
texto
Estos dos prototipos nos permiten detener todos los movieclips contenidos en la timeline sobre la que se aplica. "stopAllMovieClips" ejecuta un bucle en busca de movieclips aplicando un stop() en cada y guardandolos en una matriz, para que luego el prototipo "playStoppedMovieClips" pueda ponerlos en funcionamiento de nuevo.
Pendiente averiguar qué movieclips están en ejecución y cuales no, ya que por ahora detiene y pone en marcha todos, independientemente de que estuvieran en marcha o no en el momento de detenerse.
Actionscript:
MovieClip.prototype.stopAllMovieClips = function() {
stopped_ar = new Array();
for (var mc in this) {
if (typeof (this[mc]) == "movieclip") {
//this[mc].stop();
this[mc].stopMovieClips();
stopped_ar.push(this[mc]);
}
this.stop();
stopped_ar.push(this);
}
};
MovieClip.prototype.playStoppedMovieClips = function() {
for (var i = 0; i<stopped_ar.length; i++) {
stopped_ar[i].play();
}
};
//Uso
_root.onMouseDown = function() {
stopMovieClips();
};
_root.onMouseUp = function() {
playStoppedMovieClips();
};
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
timeline,
MovieClip
Este código nos permite dibujar shapes cerradas con solo pinchar y arrastrar el ratón. Publicado originalmente por Ivan en la lista de asnativos y ligeramente modificada la nomenclatura por mi.
Actionscript:
var coord_ar:Array = new Array();
var mix:Number;
var miy:Number;
var holder_mc:MovieClip;
function fDraw() {
holder_mc.clear();
holder_mc.lineStyle(1, 0x0000ff, 50);
holder_mc.beginFill(0x0000ff, 10);
holder_mc.moveTo(mix, miy);
for (var i = 0; i<coord_ar.length; i++) {
holder_mc.lineTo(coord_ar[i].x, coord_ar[i].y);
}
holder_mc.lineTo(mix, miy);
holder_mc.endFill();
}
function fClear() {
removeMovieClip(holder_mc);
coord_ar = [];
}
this.onMouseDown = function() {
holder_mc = this.createEmptyMovieClip("holder_mc", this.getNextHighestDepth());
mix = this._xmouse;
miy = this._ymouse;
this.onEnterFrame = function() {
coord_ar.push({x:this._xmouse, y:this._ymouse});
fDraw();
};
};
this.onMouseUp = function() {
delete this.onEnterFrame;
//fClear();
};
Este prototipo dibuja rectángulos por medio de la API de dibujo de flash. Muy completo, permite especificar incluso la redondez de las esquinas.
Lo lamento pero no sé de dónde demonios lo saqué :(
Quizás de after-hours o de prototype aunque lo busco y no lo encuentro
Actionscript:
MovieClip.prototype.drawRectangle = function(Nombre, Radio, AnchoT, AltoT, colorFondo, colorLinea, Trazo, Alfa, Prof) {
this.createEmptyMovieClip(Nombre, prof);
Ancho = AnchoT-Radio;
Alto = AltoT-Radio;
clip = this[Nombre];
vel = .1;
with (clip) {
lineStyle(Trazo, colorLinea);
beginFill(colorFondo, Alfa);
moveTo(Radio, 0);
lineTo(Ancho, 0);
for (ang=270*(Math.PI/180); ang<=360*(Math.PI/180); ang += vel) {
x = Ancho+Radio*Math.cos(ang);
y = Radio+Radio*Math.sin(ang);
lineTo(x, y);
}
lineTo(AnchoT, Alto);
for (ang=0; ang<=90*(Math.PI/180); ang += 0.05) {
x = Ancho+Radio*Math.cos(ang);
y = Alto+Radio*Math.sin(ang);
lineTo(x, y);
}
lineTo(Radio, AltoT);
for (ang=90*(Math.PI/180); ang<=180*(Math.PI/180); ang += vel) {
x = Radio+Radio*Math.cos(ang);
y = Alto+Radio*Math.sin(ang);
lineTo(x, y);
}
lineTo(0, Radio);
for (ang=180*(Math.PI/180); ang<=270*(Math.PI/180); ang += vel) {
x = Radio+Radio*Math.cos(ang);
y = Radio+Radio*Math.sin(ang);
lineTo(x, y);
}
endFill();
}
};
//
//Uso
//Nombre, Radio, AnchoT, AltoT, colorFondo, colorLinea, Trazo, Alfa, Prof
this.drawRectangle("mc", 4, 136, 16, 0xADBBBC, 0xADBBBC, 0, 10, 1);
Corrección 31/08/06: Había un error en el parámetro "Trazo" que impedía dibujar el trazo de la caja publicando en AS2.
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
draw,
MovieClip
Permite "rebobinar" un movieclip, reproduciendolo en sentido inverso.
Actionscript:
MovieClip.prototype.Reverse = function () {
if (this._currentframe>1) {
this.prevFrame();
} else {
delete this.onEnterFrame;
}
};
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
timeline,
MovieClip
Sistema de menú con submenus generados dinámicamente (hasta 2 niveles) que tira de pseudoxml. Toda la navegación se realiza a través de la función fNavTo.
Actionscript:
stop();
#include "lmc_tween.as"
secciones_xml = new XML("<secciones><seccion tit='Inicio'></seccion><seccion tit='Nokia E61'><item tit='Presentación'/><item tit='Ficha Técnica'/><item tit='Galería'/><item tit='Zoom'/></seccion><seccion tit='Real Mail Profesional'><item tit='Qué es'/><item tit='Consejos prácticos'/></seccion><seccion tit='Actívalo ahora'><item tit='Registro e instalación'/><item tit='Acceso al servicio'/></seccion></secciones>");
sec_ar = new Array("inicio", "nokiaE61", "realmail", "activalo");
fMenu = function () {
for (var i = 0; i<secciones_xml.firstChild.childNodes.length; i++) {
var submenu:MovieClip = holder_menu_mc.createEmptyMovieClip("submenu"+i, i);
submenu._y = 16*i;
submenu.miID = i;
var btn_menu:MovieClip = submenu.attachMovie("btn_menu", "btn_menu", 0);
btn_menu.txt.text = secciones_xml.firstChild.childNodes[i].attributes.tit;
btn_menu.miID = i;
btn_menu.miTipo = "m";
btn_menu.onRelease =btn_menu.onReleaseOutside = fReleaseM;
btn_menu.onRollOver = fRollOver;
btn_menu.onRollOut = fRollOut;
}
};
fRollOver = function () {
if (this != selectedSMbtn && this != selectedMbtn) {
this.colorTo(0x999999, .1,"linear");
}
};
fRollOut = function () {
if (this != selectedSMbtn && this != selectedMbtn) {
this.colorTo(0x666666,1,"easeOutQuad");
}
};
fSelectBtn = function (cual) {
selectedSMbtn.colorTo(0x666666, .1, "easeInQuad");
if (cual.miTipo=="m" && cual.miID != selectedMbtn.miID) {
selectedMbtn.colorTo(0x666666, 1, "easeOutQuad");
}
selectedMbtn.enabled = true;
selectedSMbtn.enabled = true;
cual.enabled = false;
cual.colorTo(0xFF0000, .1, "linear");
};
fReleaseM = function () {
fSelectBtn(this);
if (_root.secnow != undefined) {
fCierraSM();
}
fAbreSM(this.miID);
fNavTo(this.miID);
selectedMbtn = this;
};
fReleaseSM = function () {
fSelectBtn(this);
fNavTo(this._parent.miID, this.miID);
selectedSMbtn = this;
};
fNavTo = function (sec, subsec) {
trace(sec_ar[sec]+"/"+subsec);
};
fAbreSM = function (cual) {
var posy:Number = 0;
for (var j = 0; j<secciones_xml.firstChild.childNodes[cual].childNodes.length; j++) {
var btn_submenu:MovieClip = holder_menu_mc["submenu"+cual].attachMovie("btn_submenu", "btn_submenu"+j, j+1);
btn_submenu.miTipo = "s";
btn_submenu.miID = j;
btn_submenu._y = 16*j+16;
btn_submenu.txt.text = "> "+secciones_xml.firstChild.childNodes[cual].childNodes[j].attributes.tit;
btn_submenu.onRelease =btn_submenu.onReleaseOutside = fReleaseSM;
btn_submenu.onRollOver = fRollOver;
btn_submenu.onRollOut = fRollOut;
}
for (var i = 0; i<secciones_xml.firstChild.childNodes.length; i++) {
if (i>cual) {
holder_menu_mc["submenu"+i]._y += j*16;
}
}
_root.secnow = cual;
};
fCierraSM = function () {
for (var j = 0; j<secciones_xml.firstChild.childNodes[_root.secnow].childNodes.length; j++) {
var btn_submenu:MovieClip = holder_menu_mc["submenu"+_root.secnow]["btn_submenu"+Number(j)];
btn_submenu.removeMovieClip();
}
for (var i = 0; i<secciones_xml.firstChild.childNodes.length; i++) {
if (i>_root.secnow) {
holder_menu_mc["submenu"+i]._y -= j*16;
}
}
};
fMenu();
Descarga menu.fla
Estos superútiles componentes de Zeh me han ahorrado un tiempo precioso en más de una ocasión
zMinimalTextButton, V1.0.1 en Flash Exchange
zMinimalTextSlider, V1.1.5 en Flash Exchange
zMinimalTextButton.mxp en factorcaos
zMinimalTextSlider.mxp en factorcaos
El motivo de poner los enlaces directos a la descarga de la web de Zeh es porque en la última versión de su portfolio no hay manera de encontrar el enlace (parece que está en proceso de actualización) y los enlaces de flash exchange no me dan suficiente confianza después de los últimos cambios en macromedia...
Por cierto no dejeis de echarle un vistazo al portfolio, merece la pena ver sus trabajos.
Si algún día deja de funcionar, hay una copia aquí mismo: zminimal
Enlaces relacionados: No related posts, | Tags:
actionscript,
texto,
componente
Este prototipo permite realizar transiciones avanzadas de color, creando el efecto de foto quemada.
Actionscript:
MovieClip.prototype.picBurner = function(sentido:String) {
this.onEnterFrame = function() {
if (sentido == "out") {
if (this.n == undefined) {
this.n = 0;
}
if (this.n<256) {
this.n += 10;
} else {
delete this.onEnterFrame;
}
} else {
if (this.n == undefined) {
this.n = 256;
}
if (this.n>0) {
this.n -= 10;
} else {
delete this.onEnterFrame;
}
}
thisColor = {ra:100, rb:this.n, ga:100, gb:this.n, ba:100, bb:this.n, aa:256-this.n, ab:0};
col = new Color(this);
col.setTransform(thisColor);
};
};
//Uso
foto.picBurner("out");
foto2.picBurner("in");
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
efecto,
MovieClip
Puede parecer una estupidez, seguramente de hecho lo sea, pero si no lo tengo pegado en algún lado ya me joderá tener que volver a picar el listado de provincias del Estado español, con su correspondiente código postal como data, listo para rellenar un combo.
Actionscript:
combo_provincias.addItem("Selecciona:", "");
combo_provincias.addItem("A Coruña", "15");
combo_provincias.addItem("Álava", "1");
combo_provincias.addItem("Albacete", "2");
combo_provincias.addItem("Alicante", "3");
combo_provincias.addItem("Almería", "4");
combo_provincias.addItem("Andorra", "53");
combo_provincias.addItem("Asturias", "33");
combo_provincias.addItem("Avila", "5");
combo_provincias.addItem("Badajoz", "6");
combo_provincias.addItem("Barcelona", "8");
combo_provincias.addItem("Burgos", "9");
combo_provincias.addItem("Cáceres", "10");
combo_provincias.addItem("Cádiz", "11");
combo_provincias.addItem("Cantabria", "39");
combo_provincias.addItem("Castellón", "12");
combo_provincias.addItem("Ceuta", "51");
combo_provincias.addItem("CiudadReal", "13");
combo_provincias.addItem("Córdoba", "14");
combo_provincias.addItem("Cuenca", "16");
combo_provincias.addItem("Gerona", "17");
combo_provincias.addItem("Granada", "18");
combo_provincias.addItem("Guadalajara", "19");
combo_provincias.addItem("Guipúzcoa", "20");
combo_provincias.addItem("Huelva", "21");
combo_provincias.addItem("Huesca", "22");
combo_provincias.addItem("Baleares", "7");
combo_provincias.addItem("Jaén", "23");
combo_provincias.addItem("LaRioja", "26");
combo_provincias.addItem("LasPalmas", "35");
combo_provincias.addItem("León", "24");
combo_provincias.addItem("Lérida", "25");
combo_provincias.addItem("Lugo", "27");
combo_provincias.addItem("Madrid", "28");
combo_provincias.addItem("Málaga", "29");
combo_provincias.addItem("Melilla", "52");
combo_provincias.addItem("Murcia", "30");
combo_provincias.addItem("Navarra", "31");
combo_provincias.addItem("Orense", "32");
combo_provincias.addItem("Palencia", "34");
combo_provincias.addItem("Pontevedra", "36");
combo_provincias.addItem("Salamanca", "37");
combo_provincias.addItem("Segovia", "40");
combo_provincias.addItem("Sevilla", "41");
combo_provincias.addItem("Soria", "42");
combo_provincias.addItem("Tenerife", "38");
combo_provincias.addItem("Tarragona", "43");
combo_provincias.addItem("Teruel", "44");
combo_provincias.addItem("Toledo", "45");
combo_provincias.addItem("Valencia", "46");
combo_provincias.addItem("Valladolid", "47");
combo_provincias.addItem("Vizcaya", "48");
combo_provincias.addItem("Zamora", "49");
combo_provincias.addItem("Zaragoza", "50");
//Estilos opcionales
_global.style.setStyle("fontSize", 10);
_global.style.setStyle("color", 0x000000);
Enlaces relacionados: No related posts, | Tags:
actionscript,
combo,
provincias
Prototipo de precarga de archivos externos. Indicandole un mc de destino, se encarga de crear en el mismo un holder para cargar la foto, una barra de precarga y un mc updater que se encarga del calculo. Esta es una versión reducida y personalizada del original, publicado en layer51
Actionscript:
MovieClip.prototype.preload = function(image, barWidth, imgWidth, imgHeight) {
var barWidth = barWidth == undefined ? 100 : barWidth;
var imgWidth = imgWidth == undefined ? 0 : imgWidth;
var imgHeight = imgHeight == undefined ? 0 : imgHeight;
this.createEmptyMovieClip("holder_mc", 0);
this.createEmptyMovieClip("updater_mc", 1);
this.createEmptyMovieClip("barra_mc", 2);
this.createEmptyMovieClip("filete_mc", 3);
this.barra_mc._xscale = 1;
with (this.barra_mc) {
beginFill(0x000000, 100);
lineTo(barWidth, 0);
lineTo(barWidth, 1);
lineTo(0, 1);
lineTo(0, 0);
}
with (this.filete_mc) {
//beginFill(0x000000, 100);
lineStyle(0, 0x0000);
lineTo(barWidth, 0);
lineTo(barWidth, 2);
lineTo(0, 2);
lineTo(0, 0);
}
if (imgWidth != 0) {
this.barra_mc._x = this.filete_mc._x=imgWidth/2-barWidth/2;
}
if (imgHeight != 0) {
this.filete_mc._y = imgHeight/2-this.filete_mc._height/2;
this.barra_mc._y = imgHeight/2-this.barra_mc._height/2+1;
}
this.holder_mc.loadMovie(image);
this.updater_mc.onEnterFrame = function() {
this.Loaded = this._parent.holder_mc.getBytesLoaded();
this.Total = this._parent.holder_mc.getBytesTotal();
this.Percent = Math.ceil((this.Loaded/this.Total)*100);
if (this.Loaded != this.Total || this.Total<=0) {
this.Percent = this.Total == 0 ? 0 : this.Percent;
this._parent.barra_mc._xscale = this.Percent;
trace(this.Percent+" %");
} else {
this._parent.barra_mc._xscale = this.Percent;
if (this.holder_mc._alpha>90) {
this.holder_mc._alpha = 100;
delete this.onEnterFrame;
} else {
this.holder_mc._alpha++;
}
this._parent.barra_mc.removeMovieClip();
this._parent.filete_mc.removeMovieClip();
this.removeMovieClip();
}
};
};
//Uso:
//image, barWidth, imgWidth, imgHeight
holder_mc.preload("http://www.bigwalls.de/Fotos/MontBlanc/Drus.jpg?"+random(99999), 60, 200, 200);
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
precarga
Esta clase facilita la carga secuenciada de MovieClips.
Actionscript:
pileUpLoader = new pileUpLoader();
function pileUpLoader() {
this.movieArray = new Array();
}
pileUpLoader.addFile = function(filename, loadTarget) {
this.movieArray.push({filename:filename, loadTarget:loadTarget});
};
pileUpLoader.clearStack = function() {
this.movieArray.length = 0;
};
pileUpLoader.loadNext = function() {
if (this.movieArray.length>0) {
this.currentMovie = this.movieArray.shift();
loadMovie(this.currentMovie.filename, this.currentMovie.loadTarget);
return 1;
} else {
return 0;
}
};
//Uso
pileUpLoader.addFile(filename, targetname);
pileUpLoader.loadNext();
Enlaces relacionados: No related posts, | Tags:
utilidad,
precarga
Genera un temblor en la cantidad definida por el parámetro value. Si se usa sin parámetros detiene el temblor.
Actionscript:
MovieClip.prototype.shake = function(value) {
if (value) {
this.orgX = this._x;
this.orgY = this._y;
this.onEnterFrame = function() {
this._x = this.orgX+Math.random()*(value*2)-value;
this._y = this.orgY+Math.random()*(value*2)-value;
};
} else {
delete this.onEnterFrame;
this._x = this.orgX;
this._y = this.orgY;
}
};
//Uso 1
obj_mc.shake(5);//provoca un temblor de 5 pixeles
//Uso 2
obj_mc.shake();//detiene temblor
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
efecto,
comportamiento,
shake,
MovieClip
Sencillo sistema de scroll para movieClips.
scrollMovieClip.rar
Este prototipo calcula y devuelve la velocidad de movimiento del movieClip sobre el que se aplica (obj)
Actionscript:
MovieClip.prototype.getSpeed = function() {
this.momento = new Date();
this.t2 = this.momento.getTime();
if (!this.t1) {
this.t1 = this.momento.getTime();
}
this.t = this.t2-this.t1;
this.t1 = this.t2;
//
this.dx2 = this._x;
this.dy2 = this._y;
if (!this.dx1 || !this.dy1) {
this.dx1 = this.dx2;
this.dy1 = this.dy2;
}
this.dx = Math.abs(this.dx2-this.dx1);
this.dy = Math.abs(this.dy2-this.dy1);
this.d = Math.sqrt(this.dx*this.dx+this.dy*this.dy);
this.dx1 = this.dx2;
this.dy1 = this.dy2;
//
this.v = Math.ceil(this.d/this.t*10);
return this.v;
};
//Uso
obj.onPress = function() {
startDrag(this);
this.onEnterFrame = function() {
this.barra_mc._yscale = this.getSpeed();
};
};
obj.onRelease = mc.onReleaseOutside=function () {
stopDrag();
delete this.onEnterFrame;
};
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
velocidad,
MovieClip
Función de reposionamiento dinámico de movieClips en función del tamaño del Stage, basada en la función setStage de Lucas Motta.
Esta función añade un listener al Stage monitorizando los cambios de tamaño de la ventana del navegador para reposicionar el pie de página pie_mc. El ejemplo es válido para películas con alineación de Stage por defecto (center-center); para otras alineaciones el cálculo de la posición _y varía.
Actionscript:
H=400;
//alto de la película en el IDE
fStageFoot = function () {
stageLis = new Object();
stageLis.onResize = function() {
pie_mc._y = H+(Stage.height-H)/2-pie_mc._height-MARGENPIE;
};
Stage.addListener(stageLis);
stageLis.onResize();
};
//Uso
fStageFoot ();
Ejemplos de otros sitios:
Enlaces relacionados: No related posts, | Tags:
actionscript,
navegador,
stage,
onResize
Decir esto debería estar de más, dado el tiempo que llevo sin actualizar este blog, pero no deja de sorprenderme las visitas que sigue teniendo.
Durante este tiempo todo ha evolucionado, incluido yo mismo y este espacio se ha ido quedando obsoleto, por lo que después de mucho pensarlo he decidido darle la extrema unción y dejarlo pasar a mejor vida.
A partir de ahora, lo poco que escribo, lo haré en el nuevo wordpress, drus' stuff, que espero siga los pasos de AS_Toolkit.
Aún así seguirá estando disponible en otra dirección.
Este prototipo crea una retícula de elementos, en base a un símbolo que se presupone existente en la librería y linkado con un identificador que se pasa en el parámetro
item. El alto y ancho de la retícula se define en los parámetros
anchogrid y
altogrid.
Descargable grid prototype
Actionscript:
MovieClip.prototype.grid = function(item, anchogrid, altogrid) {
var totalgrid:Number = anchogrid*altogrid;
for (i=0; i<totalgrid; i++) {
var escalon:Number = Math.floor(i/anchogrid);
var resetx:Number = i-(escalon*anchogrid);
var mc:MovieClip = this.attachMovie(item, "obj"+i, i);
var anchopatron:Number = mc._width;
var altopatron:Number = mc._height;
mc._x = (anchopatron*resetx);
mc._y = (escalon*altopatron);
}
};
//Uso
this.grid("obj", 7, 5);
//Presupone la existencia de un simbolo en la biblioteca linkado como "obj"
Enlaces relacionados: No related posts, | Tags:
prototipo,
actionscript,
grid,
MovieClip
Este prototipo lanza una alerta de javascript con el parámetro message. Es una ampliación del método de debug trace. Resulta especialmente útil cuando nos vemos obligados a probar la película en el navegador, porque resulte imposible probar determinadas funciones en el IDE de flash.
Actionscript:
MovieClip.prototype.alert = function(message) {
trace(message);
getURL("javascript:alert('flash alert>> "+message+"');");
};
//Uso:
alert("un trace en tu navegador");
Enlaces relacionados: No related posts, | Tags:
prototipo,
alert,
trace,
navegador,
javascript,
actionscript,
MovieClip
Este prototipo abre enlaces en una nueva ventana de navegador, de tipo popup.
Usar con precaución, los actuales popup stopper de los navegadores pueden bloquear su funcionamiento.
Actionscript:
MovieClip.prototype.popUp = function(url, title, features) {
getURL("javascript:void(window.open('"+url+"','"+title+"','"+features+"'));");
};
//Uso:
this.popUp("http://drusunlimited.com","popUp name", "width=200, height=150");
Enlaces relacionados: No related posts, | Tags:
prototipo,
popup,
window,
navegador,
javascript,
actionscript,
MovieClip
Calcula la distancia ente dos puntos, devolviendo la hipotenusa.
Actionscript:
MovieClip.prototype.distance = function(x1, y1, x2, y2) {
var distance:Object = new Object();
distance.distx = x2-x1;
distance.disty = y2-y1;
distance.distance = Math.sqrt((distance.distx*distance.distx)+(distance.disty*distance.disty));
return distance;
};
//Uso:
_root.onMouseDown=function(){
distancia=this.distance(obj_mc._x, obj_mc._y, _xmouse, _ymouse);
trace(distancia.distance);
}
Aplicado sobre un movieClip, este rehuye el mouse, en función de la distancia especificada en el parámetro distance.
Actionscript:
MovieClip.prototype.avoidMouse = function(distance, speed, accel) {
distx = this._parent._xmouse-this._x;
disty = this._parent._ymouse-this._y;
distanceh = Math.sqrt((distx*distx)+(disty*disty));
if (distanceh<distance) {
var angle = Math.atan2(disty, distx);
if (accel) {
speed = Math.min(speed, accel*distance/distance);
}
this._x -= Math.cos(angle)*speed;
this._y -= Math.sin(angle)*speed;
}
};
//Uso:
obj_mc.onEnterFrame = function() {
this.avoidMouse(100, 10, 10);
};
Enlaces relacionados: No related posts, | Tags:
prototipo,
comportamiento,
actionscript,
MovieClip
Este prototipo produce un temblor en la ventana del navegador, la cantidad de veces indicadas en el parámetro amount
Actionscript:
MovieClip.prototype.shakeWin = function(amount:Number):Void {
getURL("javascript:function shakewin(n){if(parent.moveBy){for(i = 10;i> 0;i--){for(j = n;j> 0;j--){parent.moveBy(0,i);parent.moveBy(i,0);parent.moveBy(0,-i);parent.moveBy(-i,0);}}}};shakewin("+amount+");void(0)");
};
//Uso
this.shakeWin(5);
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
navegador,
javascript,
window,
MovieClip
Prototipo pausa, "made by drus" produce una detención de la timeline que lo invoca durante los milisegundos establecidos, una vez superados continúa con la reproducción.
Actionscript:
MovieClip.prototype.pausa = function(ms) {
var este = this;
este.stop();
var id = setInterval(function () {
clearInterval(id);
este.play();
}, ms);
};
//Uso
this.pausa(2000);
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
timeline,
pausa,
MovieClip
Código de movimiento parabólico, generosamente publicado por Eliseo en After hours
Actionscript:
_root.onMouseDown = function() {
mimc.x0 = mimc._x;
mimc.y0 = mimc._y;
mimc.t1 = 30;
mimc.x1 = _xmouse;
mimc.y1 = _ymouse;
g = 2;
mimc.t = 0;
mimc.vx0 = (mimc.x1-mimc.x0)/mimc.t1;
mimc.vy0 = (mimc.y1-mimc.y0-g*mimc.t1*mimc.t1/2)/mimc.t1;
mimc.onEnterFrame = function() {
this._x = this.x0+this.t*this.vx0;
this._y = this.y0+this.t*this.vy0+g*this.t*this.t/2;
if (this.t == this.t1) {
delete this.onEnterFrame;
} else {
this.t++;
}
};
};
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
comportamiento
Prototipo "made by drus" para hacer parpadear un movieClip.
Actionscript:
MovieClip.prototype.blink = function(veces, vel, fin) {
obj = this;
obj.n = obj._visible;
obj.cont = 0;
vel == undefined ? obj.vel=100 : obj.vel=vel;
this.id = setInterval(function () {
obj.cont += 1;
if (obj.cont<=veces*2) {
obj._visible = !obj._visible;
} else {
if (fin == undefined) {
fin = true;
}
obj._visible = fin;
clearInterval(obj.id);
}
}, this.vel);
};
Prototipo extraido de layer51 y modificado para admitir etiquetas HTML.
Imita el estupendo efecto de texto de group94 de construcción de texto letra a letra, con variaciones aleatorias.
Actionscript:
TextField.prototype.flipTo = function(s, rot) {
if (s == undefined) {
s = "";
}
if (this.text == "") {
this.text = " ";
}
var T = this._parent.createEmptyMovieClip(this._name+"_typer", this._parent.getNextHighestDepth());
T.txt = s;
T.rot = rot == undefined ? 0 : rot;
T.targ = this;
T.oldtxt = this.text;
for (var i = 0; i<T.oldtxt.length; i++) {
if (T.oldtxt.charAt(i) != T.txt.charAt(i)) {
T.backto = i;
break;
}
}
T.dir = -1;
T.count = 0;
T.onEnterFrame = function() {
if (this.L == undefined) {
this.L = this.targ.text.length;
}
if (++this.count>this.rot) {
this.L = this.L+T.dir;
this.count = 0;
}
var rndchar = chr(48+Math.random()*74);
if (this.dir<1) {
if (this.L>T.backto) {
this.targ.htmlText = this.targ.text.substr(0, this.L-1)+rndchar;
} else {
this.dir = 1;
}
} else {
if (this.L<=this.txt.length) {
if (this.txt.charAt(this.L-1) == "<") {
var LT = this.L;
for (var i = 0; i<this.txt.length; i++) {
if (this.txt.charAt(i) == ">") {
this.L = i+1;
var tmp = this.txt.substr(0, this.L);
this.targ.htmlText = tmp;
break;
}
}
this.targ.htmlText = this.txt.substr(0, this.L-1);
} else {
this.targ.htmlText = this.txt.substr(0, this.L-1)+rndchar;
}
} else {
this.targ.htmlText = this.txt;
this.onEnterFrame = undefined;
this.removeMovieClip();
}
}
};
};
Prototipo "made by drus", este efecto de texto deconstruye una cadena en palabras y contruye parrafos de acuerdo al tamaño deseado.
El hecho de deconstruir permite aplicar efectos a cada palabra.
Actionscript:
mytext = 'Lorem ipsum te pro utinam volutpat. An mundi putant eam, nam ad soluta aliquid cotidieque, no nam nominavi repudiandae. Eum ne vero accusam expetenda. Velit takimata consulatu no eos';
//
String.prototype.deconstruct = function(mc, ancho) {
var words:Array = new Array();
var words = this.split(" ");
var espaciado = 5;
var interlineado = 20;
var column = ancho;
var n = 0;
for (var i=0; i<words .length; i++) {
var word:MovieClip = mc.createEmptyMovieClip("word_el"+i, i);
if (i>0) {
mix += mc["word_el"+(i-1)]._width+espaciado;
} else {
var mix = 0;
}
if (mix>column) {
var mix = 0;
n++;
var miy = n*interlineado;
}
word._x = mix;
word._y = miy;
word.createTextField("field", i, 0, 0, 4, 4);
word.field.autoSize = "left";
word.field.border = false;
word.field.selectable = false;
word.field.text = words[i];
}
};
//Uso
_root.createEmptyMovieClip("parrafo",1);
mytext1.deconstruct(parrafo, 150);
Prototipo "made by drus", efecto de texto creado para aplicar negritas en fuentes pixeladas como la standard.
Debemos tener las fuentes linkadas en la librería.
Actionscript:
String.prototype.toBold = function() {
var tmp_txt:String=this.split("<b>").join("<font face='bold'>");
tmp_txt=tmp_txt.split("</b>").join("</font>");
return tmp_txt;
};
mytext = "<b>Lorem ipsum dolor sit amet</b>, consectetuer adipiscing elit. In <b>sagittis</b> quam et nibh. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras adipiscing iaculis orci. Suspendisse potenti. In elementum varius nunc. Proin accumsan arcu et massa. Quisque eu eros in turpis molestie dapibus. Aliquam erat volutpat. Donec erat purus, tristique congue, pretium vitae, volutpat eu, justo. Phasellus porttitor. Etiam et metus nec nunc egestas euismod. Suspendisse a purus. Proin laoreet leo at enim. Quisque risus. Vivamus pede. Duis quis velit. Quisque in urna. <b>Fusce elementum</b> diam vitae tellus. Vestibulum vehicula dui sed tellus.";
//Uso
txt.htmlText=mytext.toBold();
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
efecto,
texto,
String
Prototipo "made by drus" para dar a cualquier movieClip propiedades de icono: drag&drop, dobleclick...
Actionscript:
MovieClip.prototype.icono = function(milabel, handler) {
_global.icoDepth=0;
this.useHandCursor = false;
this.onPress = function() {
_global.icoDepth++;
this.swapDepths(_global.icoDepth);
startDrag(this);
this.time = new Date();
this.clickTimeb = this.time.getTime();
this.doubleClick = (this.clickTimeb-this.clickTimea);
if (this.doubleClick<400) {
handler(milabel);
}
this.clickTimea = this.time.getTime();
};
this.onRelease = this.onReleaseOutside=function () {
stopDrag();
};
var label_fm:TextFormat = new TextFormat();
label_fm.align = "center";
label_fm.font = "_sans";
label_fm.size = 10;
this.createTextField("label_txt", 1, -10, 0, 20, 30);
this.label_txt.autoSize = "center";
//this.label_txt.border = true;
this.label_txt.text = milabel;
this.label_txt.setTextFormat(label_fm);
};
//Uso:
handlerFunction = function (cual) {
trace("dobleClick "+cual);
};
ico_misdocs_mc.icono("Mis documentos", handlerFunction);
ico_papelera_mc.icono("Papelera", handlerFunction);
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
comportamiento,
MovieClip
Prototipo para recrear el efecto de texto de group94 en el que van apareciendo los carácteres de la cadena input desde el último al primero.
Publicado en After-hours
Actionscript:
TextField.
prototype.
textoFx =
function(input
){
var obj =
this;
obj.
htmlText =
"";
var mi_level =
random(500)+
500;
var mc =
this.
_parent.
createEmptyMovieClip("loop", mi_level
);
var input =
String(input
).
split(" ");
mc.
onEnterFrame =
function() {
obj.
htmlText = input.
pop()+
" "+obj.
htmlText;
if (!input.
length) {
delete mc.
onEnterFrame;
removeMovieClip(mc
);
}
};
};
//Uso
textarea.textoFx("Nulla ac justo. Integer mauris. Aliquam consectetuer libero at nulla. Phasellus at purus vitae nisi porttitor aliquam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec dignissim tellus imperdiet lorem. Nunc hendrerit consectetuer elit. Donec ullamcorper orci. In pellentesque, neque pellentesque porta consectetuer, dui odio venenatis orci, id vulputate arcu dui vel mauris. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum eget nibh non ipsum tempus consectetuer.");
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
efecto,
texto,
TextField
Prototipo de Kaax, publicado generosamente en After-hours
Actionscript:
import flash.filters.BlurFilter;
MovieClip.prototype.blurTo = function(x, y, speed, blurX, blurY, calidadBlur) {
this.onEnterFrame = function() {
if (Math.round(this._x) == Math.round(x) && Math.round(this._y) == Math.round(y)) {
blurToParando = new BlurFilter(0, 0, 0);
this._x = Math.round(this._x);
this._y = Math.round(this._y);
this.filters = [blurToParando];
delete this.onEnterFrame;
} else {
blurTo = new BlurFilter(blurX--, blurY--, calidadBlur);
this._x -= (this._x-x)*speed;
this._y -= (this._y-y)*speed;
this.filters = [blurTo];
}
};
};
//Uso:
mc.blurTo(523, 434, .1, 50, 50, 4);
Enlaces relacionados: No related posts, | Tags:
actionscript,
prototipo,
efecto,
blur,
MovieClip
—
Siguiente página »