Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Определить referrer (http://www.flasher.ru/forum/showthread.php?t=137709)

TanaTiX 20.03.2010 22:57

Определить referrer
 
Как можно определить referrer запущенного приложения?
Делаю так:
Код AS3:

root.loaderInfo.parameters.referrer

но выдает ошибку TypeError: Error #1010: A term is undefined and has no properties.
at Data/onStage()

Пробовал и с контейнером и без (нужно будет с контейнером), но не получается никак. В доках ответа не нашел, в гугле и прочем поиске тоже :(
Такое впечатление, что какую-то элементарщину забываю, а найти не могу.

udaaff 20.03.2010 23:04

Ошибка вылетает тут, судя по всему, из-за того, что root undefined.

TanaTiX 20.03.2010 23:54

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

etc 21.03.2010 02:52

Цитата:

Сообщение от TanaTiX (Сообщение 894441)
Как приложение может быть без рута?

Легко и просто, root, как и stage, могу появиться позже. Особенно, если используется контейнер.

Zebestov 21.03.2010 03:39

а еще referrer отсутствует, когда приложение запущено как в старые добрые времена — просто запущено себе и все =)
ну по крайней мере при использовании контейнера приходится определять обычный старт как-то так:

Код AS3:

var referrer:String = (wrapper.application.parameters.referrer) ? wrapper.application.parameters.referrer : 'null';
// если null - значит это просто запуск приложения


TanaTiX 21.03.2010 15:23

Вот код:
Код AS3:

package {
        import flash.display.Sprite;
        import flash.text.TextField;
        import flash.events.Event;
        import flash.events.MouseEvent;
        public class Referrer extends Sprite {
                public var str:String;
                var txt:TextField=new TextField();
                var wrapper:Object;
                var referrer:String;
                var fig:Sprite=new Sprite();
                public function Referrer():void {
                        addEventListener(Event.ADDED_TO_STAGE,onStage);
                }
                private function onStage(e:Event):void {
                        addChild(fig);
                        fig.graphics.beginFill(0xff0000);
                        fig.graphics.drawRect(0,0,100,30);
                        fig.graphics.endFill();
                        fig.x=10;
                        fig.y=120;
                        fig.addEventListener(MouseEvent.CLICK,onClick);
                        addChild(txt);
                        txt.border=true;
                }
                private function onClick(e:MouseEvent):void {
                        wrapper=Object(parent.parent);
                        referrer=wrapper.application.parameters.referrer ? wrapper.application.parameters.referrer : 'null';
                        txt.text=referrer.toString();
                }
        }
}

Приложение загружено. Все отображается на сцене. Клик по импровизированной кнопке выдает null. Или я что-то не так делаю?

etc 21.03.2010 16:33

Неплохо было бы вывести вообще все переданные параметры.

Zebestov 21.03.2010 16:48

ну а как приложение загружено? со стенки? со стенки в развернутом виде?
или просто запущено из списка "мои приложения"?
если последнее, так вот оно и говорит null — нет никакого referrer-а.

TanaTiX 21.03.2010 16:55

Попробовал аналогичным образом определить api_id и viewer_id
Код AS3:

api_id=wrapper.application.parameters.api_id?wrapper.application.parameters.api_id:'null';
viewer_id=wrapper.application.parameters.viewer_id?wrapper.application.parameters.viewer_id:'null';

Все отображается корректно. При чем даже во время загрузки (а не подействию мішки) по факту Event.ADDED_TO_STAGE


Upd. Гениально, Zebestov! Вот уж не мог об этом додуматься. Почему-то обязательно ождал какое-то значение, спасибо.

Zebestov 21.03.2010 16:58

ну вот как раз api_id и viewer_id можно на факт наличия не проверять — они как ленин... т.е. всегда =)

UPD:
нзчт =) надо на аве высунутый язык забацать и распатланую шевелюру — подчеркнут гениальность ;)


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

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