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
Este script redimensiona la ventana del navegador al tamaño especificado, discriminando entre distintos navegadores. Muy útil para evitar popups, usando en su lugar links con target "_blank".
HTML:
<script language="JavaScript" type="text/JavaScript">
<!--
br=navigator.appName;
brversion=parseInt(navigator.appVersion);
if (br=="Netscape" && brversion>=4){
window.resizeTo(800,600);
}else{
if (br=="Microsoft Internet Explorer"){
window.resizeTo(822,634);
}else{
window.resizeTo(800,600);
}
}
-->
</script>
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
HTML:
<select name="provincia">
<option value="PROVINCIA">ELIJA PROVINCIA
</option>
<option value="ALAVA">ALAVA
</option>
<option value="ALBACETE">ALBACETE
</option>
<option value="ALICANTE">ALICANTE
</option>
<option value="ALMERIA">ALMERIA
</option>
<option value="ASTURIAS">ASTURIAS
</option>
<option value="AVILA">AVILA
</option>
<option value="BADAJOZ">BADAJOZ
</option>
<option value="BARCELONA">BARCELONA
</option>
<option value="BURGOS">BURGOS
</option>
<option value="CACERES">CACERES
</option>
<option value="CADIZ">CADIZ
</option>
<option value="CANTABRIA">CANTABRIA
</option>
<option value="CASTELLON">CASTELLON
</option>
<option value="CEUTA">CEUTA
</option>
<option value="CIUDAD REAL">CIUDAD REAL
</option>
<option value="CORDOBA">CORDOBA
</option>
<option value="CORUÑA, A">CORUÑA, A
</option>
<option value="CUENCA">CUENCA
</option>
<option value="GIRONA">GIRONA
</option>
<option value="GRANADA">GRANADA
</option>
<option value="GUADALAJARA">GUADALAJARA
</option>
<option value="GUIPUZCOA">GUIPUZCOA
</option>
<option value="HUELVA">HUELVA
</option>
<option value="HUESCA">HUESCA
</option>
<option value="ILLES BALEARS">ILLES BALEARS
</option>
<option value="JAEN">JAEN
</option>
<option value="LEON">LEON
</option>
<option value="LLEIDA">LLEIDA
</option>
<option value="LUGO">LUGO
</option>
<option value="MADRID">MADRID
</option>
<option value="MALAGA">MALAGA
</option>
<option value="MELILLA">MELILLA
</option>
<option value="MURCIA">MURCIA
</option>
<option value="NAVARRA">NAVARRA
</option>
<option value="OURENSE">OURENSE
</option>
<option value="PALENCIA">PALENCIA
</option>
<option value="PALMAS, LAS">PALMAS, LAS
</option>
<option value="PONTEVEDRA">PONTEVEDRA
</option>
<option value="RIOJA, LA">RIOJA, LA
</option>
<option value="SALAMANCA">SALAMANCA
</option>
<option value="SEGOVIA">SEGOVIA
</option>
<option value="SEVILLA">SEVILLA
</option>
<option value="SORIA">SORIA
</option>
<option value="TARRAGONA">TARRAGONA
</option>
<option value="TENERIFE, SANTA CRUZ DE">TENERIFE, SANTA CRUZ DE
</option>
<option value="TERUEL">TERUEL
</option>
<option value="TOLEDO">TOLEDO
</option>
<option value="VALENCIA">VALENCIA
</option>
<option value="VALLADOLID">VALLADOLID
</option>
<option value="VIZCAYA">VIZCAYA
</option>
<option value="ZAMORA">ZAMORA
</option>
<option value="ZARAGOZA">ZARAGOZA
</option>
</select>
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
—
Siguiente página »