Просмотр полной версии : Как узнать 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, в данном случаи это будет одно и тоже.
Трейс выдает 0 0.
movie - название клипа из подгружаемой swf.
Как можно узнать размеры загруженой swf?
evt.target.content.width
evt.target.content.height
тоже не работает.
А вы уверены, что на момент трейса, ролик уже загружен?
†‡Paladin‡†
01.09.2008, 02:31
Ну надо полюбому отлавливать initialize
Кусок из основного класса:
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);
}
}
}
Вероятно, в первом кадре этого мувика ничего нет.
Да, первый кадр пустой. И как лучше в таких случаях поступать ? Нарисовать в нем прозрачный прямоугольник?
Да, первый кадр пустой. И как лучше в таких случаях поступать ? Нарисовать в нем прозрачный прямоугольник?
Да, я так часто делаю. :)
Да, первый кадр пустой. И как лучше в таких случаях поступать ? Нарисовать в нем прозрачный прямоугольник?
Ну например да.
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);
прекрасно работает ...
Подскажите пожалуйста,
Вызываю класс из примера,
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.
Вообще я все это делаю для того что-бы вызывать функцию из подгружаемого мувика :)
Смотри тогда эту темку:
http://www.flasher.ru/forum/showthread.php?t=115528
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.