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
Esta forma de embeber un swf al 100% de alto y ancho sigue el método usado por group94 que aporta además que las barras de dezplazamiento del navegador se muestran cuando el tamaño de la ventana es menor que el definido en la tabla. Investigado por Eliseo y publicado generosamente en After-Hours.
Las etiquetas usadas para embeber el swf son una alternativa al método tradicional, como la capa oculta cuya finalidad es insertar contenido textual para la correcta indexación del flash por los buscadores.
HTML:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Titulo de la página
</title>
<meta name="description" content="descripción">
<meta name="keywords" content="palabras clave">
<style type="text/css">
<!--
body,html {
margin: 0px 0px 0px 0px;
width:100%;
height:100%;
}
td {
valign: middle;
width:100%;
height:100%;
}
-->
</style>
</head>
<body>
<table width="100%" height="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td align="center">
<object type="application/x-shockwave-flash" data="main.swf" width="100%" height="100%" title="main" standby="main">
<param name="movie" value="main.swf" />
<param name="scale" value="noscale" />
<param name="quality" value="best" />
<param name="menu" value="false" />
</object>
<div id="Layer1" style="position:absolute; left:177px; top:47px; width:445px; height:43px; z-index:1; visibility: hidden;">
Contenido textual para indexación en buscadores
</div>
</td>
<td>
<img src="" width="0" height="600" alt=""/>
</td>
</tr>
<tr>
<td><img src="" width="800" height="0" alt=""/></td>
<td><a href="#"></a></td>
</tr>
</table>
</body>
</html>
Enlaces relacionados: No related posts, | Tags:
navegador,
window,
html
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 »