Forse dopo tutti questo giorni sarai non tornerai a vedere qui ma comunque lascio questo risultato per i posteri...

Il povero Flep nonostante le sue conoscenze è sempre un "umanoide" e nonostante i numerosi
var utenti_flepStudio:Array = new Array();
var flep_mc:MovieClip=new MovieClip();
for (var i:int=0;i
{
addChild(flep_mc);
}
(funzionerebbe? gli array e i for legati agli mc ancora non sono il mio forte... Un bel Tutorialino in merito Flep?

)
per ricordardarsi e riuscire a rispondere a tutti e un pò di collaborazione non fa male.
Veniamo a noi:
Code:
/*
*************************************
* Events Scroller
* http://www.FlepStudio.org
* © Author: Filippo Lughi
* version 1.0
*************************************
*/
package {
import flash.display.MovieClip;
import flash.text.TextField;
import flash.events.Event;
import flash.events.ContextMenuEvent;
import flash.net.URLRequest;
import flash.net.navigateToURL;
import flash.ui.ContextMenu;
import flash.ui.ContextMenuItem;
public class Main extends MovieClip {
private var file_xml:LoadingXML;
private var caricatore:Caricatore;
public var objects_array:Array;
public var thumbs_array:Array;
public var container_mc:MovieClip;
private var counter:int=0;
private var ratio:Number;
private var speed:int=1;
public function Main() {
addEventListener(Event.ADDED_TO_STAGE,init);
}
private function init(evt:Event):void {
removeEventListener(Event.ADDED_TO_STAGE,init);
initMenu();
loadXML();
stage.frameRate=30;
objects_array=new Array ;
thumbs_array=new Array ;
container_mc=new MovieClip ;
addChild(container_mc);
}
private function loadXML():void {
file_xml=new LoadingXML(this);
}
public function loadImage():void {
caricatore=new Caricatore(this,objects_array[counter].thumb,counter);
counter++;
}
public function positionClips():void {
removeChild(loading_txt);
removeChild(info_txt);
for (var i:int=0; i < thumbs_array.length; i++) {
if (i > 0) {
thumbs_array[i].y=thumbs_array[i - 1].y + thumbs_array[i - 1].height + 10;
}
thumbs_array[i].visible=true;
}
//container_mc.x=stage.stageWidth - container_mc.width / 2;
container_mc.x=0;
container_mc.y=0;
//ratio=- container_mc.height / stage.stageHeight;
ratio=- container_mc.height / 400;
doMovement();
}
private function doMovement():void {
trace("Eseguo doMovement e assegno il moveMe!");
trace("il container_mc è "+container_mc);
trace("X di hitArea test è "+hit_mc.x);
trace(hit_mc.y);
container_mc.addEventListener(Event.ENTER_FRAME,moveMe);
}
private function moveMe(evt:Event):void {
trace(hit_mc.x);
trace(hit_mc.y);
//if (hit_mc.hitTestPoint(mouseX,mouseY)) {
if (hit_mc.hitTestPoint(stage.mouseX,stage.mouseY)) {
trace("Corrisponde if1. X: "+mouseX);
//var arrY:Number=mouseY * ratio + stage.stageHeight / 2;
var arrY:Number=mouseY * ratio + 200;
var dy:Number=arrY - evt.currentTarget.y;
var ay:Number=dy * .3;
evt.currentTarget.y+= ay;
check(evt.currentTarget as MovieClip);
} else {
evt.currentTarget.y-= speed;
check2(evt.currentTarget as MovieClip);
}
}
private function check(m:MovieClip):void {
//if (m.y < - m.height + stage.stageHeight - 10) {
if (m.y < - m.height + 400 - 10) {
//m.y=- m.height + stage.stageHeight - 10;
m.y=- m.height + 400 - 10;
} else if (m.y > 0) {
m.y=0;
}
}
private function check2(m:MovieClip):void {
//if (m.y <= - m.height + stage.stageHeight) {
if (m.y <= - m.height + 400) {
speed*= -1;
} else if (m.y >= 0) {
speed*= -1;
}
}
public function initMenu():void {
var etichetta:String='Flash Events Scroller';
var cm:ContextMenu=new ContextMenu ;
var item:ContextMenuItem=new ContextMenuItem(etichetta);
cm.hideBuiltInItems();
cm.customItems.push(item);
item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,itemHandler1);
this.contextMenu=cm;
}
private function itemHandler1(event:ContextMenuEvent):void {
var url:String='http://www.flepstudio.org/';
var request:URLRequest=new URLRequest(url);
navigateToURL(request,'_parent');
}
}
}
la trovata dell'ADDED_TO_STAGE è favolosa (risolve tutto in 2 secondi) ma causa in questo swf non pochi problemini dovuti ai suoi continui rimandi allo stage...
non so se il metodo da me adottato sia il migliore l'unica cosa che so è che con le mie conoscenze ci ho messo 2 giorni per trovare la soluzione soprattutto dell'hitTestPoint, che poi era veramente una cavolata!!!

ma è così che si impara...
Chiamiamo l'swf esterno dello "scrolling eventi" caricato nello stage scr.swf e il suo fla scr.fla per comodità;
1) Visto il cambiamento di stage ho modificato tutti i riferimenti nella Main.as di scr.swf con misure reali che devono coincidere con le misure dello stage di scr.swf (quindi se modificate l'originale e ne create uno vostro dovete adattarle; in sostanza si varia fra le misure totali dello stage di scr.swf (es.: stage.stageWidth) e la sua metà (es.: stage.stageWidth/2) qui vanno inserite le misure totali o la loro metà;
2) Per riposizionare il container_mc basta dargli un paio di misure tenerdo presente il suo x=0 e y=0: con un container_mc.x=0 e container_mc.y=0 si nota subito come non si distanzi molto dalla sua posizione originale;
3) per evitare di vedere le news fuori dallo stage si risolve aggiungendo una maschera della dimensione dello stage a cui sottomettiamo hit_mc nel scr.fla , così tutto quello che è oltre viene nascosto

;
poi la ciliegina:
4) hitTestPoint: il problema è che funziona tutto (ossia le news scorrono avanti e indietro, e se avete sistemato le misure come vi ho detto neanche il cambiare le misure dello stage bloccherà lo scorrimento) però l'hitTestPoint non funziona. Questo perchè si riferisce alla posizione del mouse (mouseX, mouseY) che il clip non riesce più a rilevare perchè inserito dentro un altro stage. la soluzione è semplicemente:
hit_mc.hitTestPoint(stage.mouseX, stage.mouseY);
Nel file allegato e nel codice qui sopra ho commentato la maggior parte delle stringhe originali riscrivendo le modificate sotto per permettervi di vederle
cecco.rar
byebye
