Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как получить доступ к flashvars из класса. (http://www.flasher.ru/forum/showthread.php?t=172490)

sspy 10.12.2011 22:44

Как получить доступ к flashvars из класса.
 
Есть 2 квласса

Код AS3:

package{
        import flash.display.Sprite;
        import flash.external.ExternalInterface;
        import flash.display.LoaderInfo;
 
        public class WebSocketClient extends Sprite
        {
                public var _xmlSocketManager:XMLSocketManager;
 
                public function fff(m:String):void
                {
 
                }
 
                public function WebSocketClient()
                {
                        // constructor code
                        //ExternalInterface.call("cm.exe", event.data);
                        if (ExternalInterface.available && this.loaderInfo.parameters["debug"])
                        {
                                ExternalInterface.call("console.log",'[clive] flash create!');
                        }
                        _xmlSocketManager = new XMLSocketManager();
                        _xmlSocketManager.connectToServer();
                }
 
        }
 
}


и

Код AS3:

package  {
 
  import flash.events.*;
  import flash.net.XMLSocket;
  import flash.system.Security;
  import flash.external.ExternalInterface;
  import flash.display.LoaderInfo;
 
  /*
  * Класс, работающий с сокетами
  */

 
  public class XMLSocketManager {
 
    private var hostName:String = "domen.ru";
    private var port:uint = 11111111;
    private var authPort:uint = 11111111;
    private var socket:XMLSocket;
 
    public function logm(m):void
    {
 
      // как отсюда получить доступ к flashvar
      // пробовал так this.loaderInfo.parameters["debug"] не получается ошибка
      if (ExternalInterface.available)
      {
        ExternalInterface.call("console.log",'[clive] ' + m.toString());
      }
    }
  }
 
}

во втором листинге к коменте написано как и пытался получить доступ к флеш переменным но так и не получилось подскажите пожалуйста.

fish_r 10.12.2011 22:51

свойство loaderInfo есть только у DisplayObject и Loader

sspy 10.12.2011 22:56

подключил
Код AS3:

import flash.display.DisplayObject;

и после попробовал вызвать
Код AS3:

public function logm(m):void
                {
                        if (ExternalInterface.available && DisplayObject.LoaderInfo.parameters["debug"])
                        {
                                ExternalInterface.call("console.log",'[clive] ' + m.toString());
                        }
                }

всё равно не получается(

Добавлено через 1 минуту
Код AS3:

public function logm(m):void
                {
                        var d:DisplayObject;
                        d = new DisplayObject();
 
                        if (ExternalInterface.available && d.LoaderInfo.parameters["debug"])
                        {
                                ExternalInterface.call("console.log",'[clive] ' + m.toString());
                        }
                }


попробовал так и всё равно нет, ошибка при последнем была такая: ....\XMLSocketManager.as, строка 26 1119: Обращение возможного неопределенного свойства LoaderInfo через ссылку со статическим типом flash.display:DisplayObject .

fish_r 10.12.2011 23:07

имелся в виду, конечно, не непосредственно экземпляр DisplayObject, экземпляры этого класса никогда не создаются, имеется в виду экранный объект наследующий DisplayObject, причем он должен быть добавлен на сцену основного swf-файла.

sspy 10.12.2011 23:11

а если по русски?) как получить доступ то?)

fish_r 10.12.2011 23:14

вот хелп

например вы можете извлечь варсы из stage приложения

Добавлено через 1 минуту
В классе в котором у вас есть доступ к stage (напр. Main() )

Код AS3:

                private function excludeParams():Array
                {
                        var params:Array = this.stage.loaderInfo.parameters;
 
                        return params;
                }

Добавлено через 4 минуты
Конечно это будет работать только если флешка на странице, например, то есть просто в проигрывателе, когда нет контейнера и варсов никаких нет.

sspy 10.12.2011 23:18

Код AS3:

stage.DisplayObject.LoaderInfo.parameters["debug"];

так?) тоже не работает( пошел читать хелпы но учивая что я полный нуб во влеше вретли пойму, но вдруг)

fish_r 10.12.2011 23:19

нет не так ) смотрите код выше

sspy 10.12.2011 23:20

Код AS3:

private function excludeParams():Array
                {
                        var params:Array = this.stage.loaderInfo.parameters;
 
                        return params;
                }

не работает ошибка ...\XMLSocketManager.as, строка 24 1119: Обращение возможного неопределенного свойства stage через ссылку со статическим типом XMLSocketManager .

fish_r 10.12.2011 23:21

правильно, потому что ваш класс не на сцене, он не экранный объект. Как называется гл.класс вашего приложения?


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

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