Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 22.07.2012, 12:54
codedemen вне форума Посмотреть профиль Отправить личное сообщение для codedemen Найти все сообщения от codedemen
  № 1  
Ответить с цитированием
codedemen

Регистрация: Jul 2012
Сообщений: 4
Question подгрузка внешнего swf

Приветствую форумчане!

В as3(да и вообще в флеше) я почти полный 0 - никогда не приходилось с ней работать. Сейчас возникла необходимость для небольшого личного проектика создать обертку для подгрузки в нее вешнего swf файла.
Проблема в следующем - когда я подгружаю этот самый внешний файл он почемто растягиается далеко за видимую область - как итог я вижу на сцене не всю флеш, а только ее евый верхний угол. При этом я уже дня 3 бьюсь над тем как изменить размер этой самой флешки, но ничего не получается. Пробовал создать контейнер типа movieclip и грузить swf туда, а в клипе установить scale, но не помогает, так как подгружаемый файл сам по себе тоже лоадер и он грузит все обьекты непосредственно на сцену.

При этом он использует компонент scene для нахождения размеров сцены, но сколько я не писал и не убирал Sequriity.AllowDomain(*) - никаких ошибок флеш не выдает - т.е. то ли он обращается не к той какой то сцене(!?) хотя, насколько я понимаю, она 1 для всех - ведь это то, что указано в html, то ли он к ней не может по каким то причинам обратиться, а ошибок не выдает.

Собственно ваопрос в том - как заставить его грузиться в нормальном размере?

Ниже приведу код своего лоадера и декомпилированные куски того, как и куда добавляется подгружаемый swf:

Мой loader:
Код AS3:
package
{
	import com.demonsters.debugger.MonsterDebugger;
 
	import flash.display.*;
	import flash.display.Sprite;
	import flash.events.*;
	import flash.net.*;
	import flash.system.*;
	import flash.text.TextField;
 
 
	public class Connector extends Sprite
	{		
		private var button:Sprite = new Sprite();
		public var loader:Loader;
		public var container:MovieClip;
		public var request:URLRequest;
		public var Disp:DisplayObjectContainer;
		public var Mov:MovieClip;
		public var config:XML;
 
 
		public function ButtonInteractivity() {
			drawButton()
			button.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
			addChild(button);
 
		}
 
		private function drawButton():void {
			var textLabel:TextField = new TextField()
			button.graphics.clear();
			button.graphics.beginFill(0xD4D4D4); // grey color
			button.graphics.drawRoundRect(0, 0, 80, 25, 10, 10); // x, y, width, height, ellipseW, ellipseH
			button.graphics.endFill();
			textLabel.text = "Click Me!";
			textLabel.x = 10;
			textLabel.y = 5;
			textLabel.selectable = false;
			button.addChild(textLabel)
		}
 
		private function mouseDownHandler(event:MouseEvent):void {
			height = 100;
			width = 100;
			addChild(loader);
		}
 
		public function Connector()
		{
 
			if(stage != null) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);	
		}
		public var contentheight:int;
		public var contentwidth:int;
		private function init(e:Event = null):void {
			removeEventListener(Event.ADDED_TO_STAGE, init);
			ButtonInteractivity();
			MonsterDebugger.initialize(this);
			MonsterDebugger.trace(this,this.loaderInfo.loaderURL);
			stage.addEventListener( Event.ENTER_FRAME, this._onUpdate );
			loader = new Loader();
			root.scaleX = 0.3;
			root.scaleY = 0.3;
			request = new URLRequest("/Loading.swf");	
			loader.load(request);
		}
 
		private function _onUpdate( e:Event ):void
		{
			MonsterDebugger.trace(this,"sc");
			//вообще не помогает - кнопка остается уменьшенной, но объекты, добавленные подгруженным лоадером - нет
			stage.scaleX = 0.3; 
			stage.scaleY = 0.3;
 
		}
	}
}
Обращение к сцене из init подгружаемой swf
Код AS3:
stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.EXACT_FIT;
            StageReferance.setup(stage);
класс StageReferance
Код AS3:
package com.pickgliss.toplevel
{
    import flash.display.*;
    import flash.events.*;
 
    final public class StageReferance extends Object
    {
        public static var stageHeight:int;
        public static var stageWidth:int;
        private static var _stage:Stage;
 
        public function StageReferance()
        {
            return;
        }// end function
 
        public static function setup(param1:Stage) : void
        {
            if (_stage != null)
            {
                return;
            }
            _stage = param1;
            _stage.addEventListener(Event.EXIT_FRAME, __onNextFrame);
            _stage.addEventListener(Event.RESIZE, __onResize);
            _stage.stageFocusRect = false;
            return;
        }// end function
 
        private static function __onNextFrame(event:Event) : void
        {
            if (_stage.stageWidth > 0)
            {
                _stage.removeEventListener(Event.EXIT_FRAME, __onNextFrame);
                stageWidth = _stage.stageWidth;
                stageHeight = _stage.stageHeight;
            }
            return;
        }// end function
 
        private static function __onResize(event:Event) : void
        {
            stageWidth = _stage.stageWidth;
            stageHeight = _stage.stageHeight;
            return;
        }// end function
 
        public static function get stage() : Stage
        {
            return _stage;
        }// end function
 
    }
}


Буду очень благодарен за помощь! Бьюсь уже 3 дня и ничего пока что не выходит. Спасибо.

Создать новую тему   Часовой пояс GMT +4, время: 00:38.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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