Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Помогите с удалением контейнера в AS3 (http://www.flasher.ru/forum/showthread.php?t=138148)

alexkey 31.03.2010 15:06

Помогите с удалением контейнера в AS3
 
Здравствуйте, господа профессионалы.

Я не профессионал и поэтому не могу решить одну проблему. Делаю сайт с 3d фотогалереей. Когда захожу на страничку самой галереи, все хорошо, но когда хочу вернуться или перейти на другую страничку, а потом снова вернуться на страничку с галереей, то визуально создается ощущение что она накладывается сама на себя, и на экране видно месиво из фотографий, в общем абракадабра какая-то.

У меня есть подозрение что, я удалив контейнер, не сделал еще чего-то важного, поэтому и содержание галереии не исчезает, а появляется снова при повторном обращении к ней.

Помогите пожалуйста решить этот вопрос.

вот код с галереей:
Код AS3:

stop ();
 
import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.materials.*;
import caurina.transitions.*;
 
var container_x:Number = stage.stageWidth * 0.5;
var container_y:Number = stage.stageHeight * 0.5 + 160;
var container:Sprite = new Sprite();
container.x = container_x;
container.y = container_y;
addChild(container);
 
var scene:Scene3D = new MovieScene3D(container);
var cam:Camera3D = new Camera3D();
cam.zoom = 6;
 
 
loading_info.text = "";
 
 
var no_of_ring:Number = 3;
var angle:Number = 0;
var p_dict:Dictionary = new Dictionary();
var pa:Array = new Array();
var filename_list = new Array();
 
 
var folder:String = "PortfolioPhotos_Infop2/";
var i:Number;
var total:Number;
var flashmo_xml:XML = new XML();
var pic_loader:Loader = new Loader();
var xml_loader:URLLoader = new URLLoader();
xml_loader.load(new URLRequest("thumbnail_list_5.xml"));
xml_loader.addEventListener(Event.COMPLETE, create_thumbnail);
 
function create_thumbnail(e:Event):void
{
        flashmo_xml = XML(e.target.data);
        total = flashmo_xml.thumbnail.length();
        var angle_per:Number = Math.PI * 2 * no_of_ring / total;
 
        for( i = 0; i < total; i++ )
        {
                filename_list.push( flashmo_xml.thumbnail[i].@filename.toString() );
 
 
                var bfm:BitmapFileMaterial = new BitmapFileMaterial(
                        folder + "s_" + flashmo_xml.thumbnail[i].@filename.toString());
 
                bfm.oneSide = false;
                bfm.smooth = true;
                var p:Plane = new Plane(bfm, 100, 100, 2, 2);
                scene.addChild(p);
                var p_container:Sprite = p.container;
                p_container.name = "flashmo_" + i;
                p_dict[p_container] = p;
                p_container.buttonMode = true;
                p_container.addEventListener( MouseEvent.ROLL_OVER, p_rollover );
                p_container.addEventListener( MouseEvent.ROLL_OUT, p_rollout );
                p_container.addEventListener( MouseEvent.CLICK, p_click );
 
                p.rotationY = - (i * angle_per) * (180/Math.PI) + 90;
                p.x = Math.cos(i * angle_per) * 300;
                p.z = Math.sin(i * angle_per) * 300;
                p.y = Math.floor( i / 18 ) * 105;
        }
}
 
function p_rollover(me:MouseEvent)
{
        var sp:Sprite = me.target as Sprite;
        Tweener.addTween( sp, {alpha: 0.5, time: 0.4, transition:"easeOutExpo"} );
}
function p_rollout(me:MouseEvent)
{
        var sp:Sprite = me.target as Sprite;
        Tweener.addTween( sp, {alpha: 1, time: 0.4, transition:"easeInExpo"} );
}
function p_click(me:MouseEvent)
{
        var sp:Sprite = me.target as Sprite;
        var s_no:Number = parseInt(sp.name.slice(8,10));
 
 
 
        pic_loader.contentLoaderInfo.addEventListener(Event.OPEN, on_open);
        pic_loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, on_progress);
        pic_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, on_pic_loaded);
        pic_loader.load(new URLRequest( folder + filename_list[s_no]));
 
        pic_loader.alpha = 0;
 
 
        Tweener.addTween( container, { y: 1200, time: 0.6, transition:"easeInExpo" } );
}
 
 
 
function on_open(e:Event):void
{
        loading_info.text = "Loading... 0%";
}
function on_progress(e:ProgressEvent):void
{
        var percent:Number = Math.round(e.bytesLoaded / e.bytesTotal * 100);
        loading_info.text = "Loading... " + percent + "%";
}
function on_pic_loaded(e:Event):void
{
        loading_info.text = "";
 
 
        addChildAt(pic_loader, 1);
        pic_loader.x = Math.round(stage.stageWidth - pic_loader.width) * 0.5;
        pic_loader.y = Math.round(stage.stageHeight - pic_loader.height) * 0.5;
        pic_loader.addEventListener(MouseEvent.CLICK, remove_pic);
        Tweener.addTween( pic_loader, { alpha: 1, time: 0.8, transition:"easeInExpo" } );
        removeEventListener(Event.ENTER_FRAME, render);
}
function remove_pic(e:Event):void
{
        Tweener.addTween( pic_loader, { alpha: 0, time: 1, onComplete:function() { removeChild(this); } } );
        Tweener.addTween( container, { y: container_y, time: 1, delay: 1, transition:"easeOutExpo"} );
        addEventListener(Event.ENTER_FRAME, render);
 
 
}
addEventListener(Event.ENTER_FRAME, render);
function render(e:Event):void
{
        var distance_x:Number = (stage.mouseX - 400) * 0.0001;
        angle += distance_x;
        cam.x = - Math.cos(angle) * 150;
        cam.z = Math.sin(angle) * 150;
        scene.renderCamera(cam);
}
 
 
function goBt3(e:Event) //вот здесь я удаляю контейнер,но..//
{
    removeChild(container);
    this.gotoAndPlay (1);
}
 
bt3.addEventListener(MouseEvent.CLICK, goBt3);


Into the Dark 31.03.2010 15:34

Ну я так понимаю вы создали кнопку по нажатии которой должен удаляться контейнер?

Ну у вас же есть функция remove_pic почему нельяз чистить в ней?

Код AS3:

while (родитель.numChildren > 0) { 
              родитель.removeChi1dAt@);
      }


alexkey 31.03.2010 16:54

Это кнопка-аналог кнопки назад. То есть при ее нажатии пользователь возвращается на страницу где может выбрать другую галерею или же снова войти в эту.

Прошу прощения, но так как я начинающий, то не могли бы вы подробней описать мне то, что делает фрагмент когда, который вы написали? И что в данном случае является "родителем"? Потому что я пока еще не разобрался с тем куда его вставлять и что именно вставлять в роли родителя.

Заранее спасибо.

Into the Dark 01.04.2010 17:38

Код AS1/AS2:

function goBt3(e:Event) //вот здесь я удаляю контейнер,но..//{ 
while (numChildren> 0){
                removeChildAt(0);}
          this.gotoAndPlay (1);}

Попробуйте так


Часовой пояс GMT +4, время: 15:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.