Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как узнать width и height клипа (MovieClip) (http://www.flasher.ru/forum/showthread.php?t=115483)

Visual 01.09.2008 00:58

Как узнать width и height клипа (MovieClip)
 
Код:

                var movie:MovieClip = evt.target.loader.content.movie;
                        this.addChild(movie);
                        movie.x = movie.width/2;
                        movie.y = movie.height/2;;
                        movie.play();
                        trace(movie.width);
                        trace(movie.height);

В результате ролик играет нормально, но не могу получить высоту и ширину, чтоб выставить клип по координатам.

ramshteks 01.09.2008 01:14

Код:

evt.target.loader.content.movie;
до крайности странная строчка...
я так понимаю вы Loader'ом грузите.
тогда скорее всего вместо этой строчки нужно вставить
Код:

evt.target.content;
хотя может я ошибаюсь.
ичто значит не можете получить? что трейс выдает?

BlooDHounD 01.09.2008 01:39

ramshteks, в данном случаи это будет одно и тоже.

Visual 01.09.2008 02:09

Трейс выдает 0 0.
movie - название клипа из подгружаемой swf.
Как можно узнать размеры загруженой swf?

Код:

evt.target.content.width
evt.target.content.height

тоже не работает.

etc 01.09.2008 02:20

А вы уверены, что на момент трейса, ролик уже загружен?

†‡Paladin‡† 01.09.2008 02:31

Ну надо полюбому отлавливать initialize

Visual 01.09.2008 02:32

Кусок из основного класса:
Код:

var map:GameLoader = new GameLoader("map.swf", 300, 300);
addChild(map);

Вот класс Лоадера:

Код:

package main{

        import flash.display.Sprite;
        import flash.display.Loader;
        import flash.display.LoaderInfo;
        import flash.text.TextField;
        import flash.text.TextFieldAutoSize;
        import flash.net.URLRequest;
        import flash.events.Event;
        import flash.events.ProgressEvent;
        import flash.net.LocalConnection;
        import flash.display.MovieClip;

        public class GameLoader extends Sprite {
                public var loader:Loader = new Loader();
                private var loadStatus:TextField = new TextField();
                private var preloader_mc:Preloader = new Preloader();
                private var posX:int = 0;
                private var posY:int = 0;

                public function GameLoader(movie:String, x:int=0, y:int=0) {
                        var request:URLRequest = new URLRequest(movie);
                        posX = x;
                        posY = y;
                        loader.load(request);
                        loader.contentLoaderInfo.addEventListener(Event.OPEN,displayPreloader);
                        loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,updatePreloader);
                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE,displayMovie);
                }

                private function displayPreloader(evt:Event):void {

                        this.addChild(preloader_mc);
                        preloader_mc.x = 200;
                        preloader_mc.y = 200;

                }
                private function updatePreloader(evt:ProgressEvent):void {

                        var bytesLoaded:Number = evt.bytesLoaded;
                        var bytesTotal:Number = evt.bytesTotal;
                        var s:String = "";
                        var percent:Number = 0;
                        if (bytesTotal>0) {
                                percent = Math.floor(bytesLoaded/bytesTotal*100);
                        }
                        preloader_mc.txt.text=percent+"%";
                        preloader_mc.progressbar.gotoAndStop(percent+1);

                }
                private function displayMovie(evt:Event):void {

                        removeChild(preloader_mc);

                        var movie:MovieClip = evt.target.loader.content.movie;
                        this.addChild(movie);
                        movie.x = movie.width/2;
                        movie.y = movie.height/2;
                        movie.play();
                        trace(movie.width);
                        trace(movie.height);

                        loader.contentLoaderInfo.removeEventListener(Event.OPEN,displayPreloader);
                        loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS,updatePreloader);
                        loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,displayMovie);

                }
        }
}


etc 01.09.2008 03:10

Вероятно, в первом кадре этого мувика ничего нет.

Visual 01.09.2008 03:20

Да, первый кадр пустой. И как лучше в таких случаях поступать ? Нарисовать в нем прозрачный прямоугольник?

enepx 01.09.2008 07:39

Цитата:

Сообщение от Visual (Сообщение 761525)
Да, первый кадр пустой. И как лучше в таких случаях поступать ? Нарисовать в нем прозрачный прямоугольник?

Да, я так часто делаю. :)

etc 01.09.2008 10:27

Цитата:

Сообщение от Visual (Сообщение 761525)
Да, первый кадр пустой. И как лучше в таких случаях поступать ? Нарисовать в нем прозрачный прямоугольник?

Ну например да.

charlyod 03.09.2008 17:19

Подскажите пожалуйста,
Вызываю класс из примера,
var map:GameLoader = new GameLoader("background.swf", 300, 300);

вот в этом месте аидимо:
var movie:MovieClip = evt.target.loader.content.movie;
получаю ошибку

получаю следующую ошибку
ReferenceError: Error #1069: Property movie not found on Background and there is no default value.

charlyod 03.09.2008 17:27

... хотя trace(evt.target.loader.content.width);
прекрасно работает ...

Visual 03.09.2008 17:41

Цитата:

Сообщение от charlyod (Сообщение 762041)
Подскажите пожалуйста,
Вызываю класс из примера,
var map:GameLoader = new GameLoader("background.swf", 300, 300);

вот в этом месте аидимо:
var movie:MovieClip = evt.target.loader.content.movie;
получаю ошибку

получаю следующую ошибку
ReferenceError: Error #1069: Property movie not found on Background and there is no default value.

"movie" название клипа (Instance Name) выложеного на основной таймлайн, в вашем случае в background.swf.

charlyod 03.09.2008 18:15

Спасибо,
Работает, но если у клипа не прописан class в Symbol Propirties
Как только прописываю получаю вот такое:
TypeError: Error #1034: Type Coercion failed: cannot convert bgmv@1a280f51 to flash.display.MovieClip.

Вообще я все это делаю для того что-бы вызывать функцию из подгружаемого мувика :)

Visual 03.09.2008 19:22

Смотри тогда эту темку:
http://www.flasher.ru/forum/showthread.php?t=115528


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

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