Среда, 24 Апреля 2024, 16:26

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Движки для браузерных игр » Проблема с непостоянным отображением окон в уроках Assasin'a (их решение)
Проблема с непостоянным отображением окон в уроках Assasin'a
hellgroundДата: Понедельник, 22 Марта 2010, 07:00 | Сообщение # 1
был не раз
Сейчас нет на сайте
Все кто прошёл урок с менюшками у ассасина заметил непостоянное(можно сказать очень редкое) отображение окошек Профиль Инвентарь(и я так понимаю в будущем Журнал квестов) как я исправил эту проблему:
для начала надо понять что мы хотим сделать, нам надо объединить файл menu.swf с файлом GameWindow.swf(возможно это не проффесионально но это спасает на 100%)
для этого сначала убираем ссылку в GameWindow на menu(просто сотрите строки где указывается путь к menu.swf)
далее добавляем всю инфу(только осторожно) из файла menu.swf в файл gamewindow.swf

Code
<?xml version="1.0" encoding="utf-8"?>
<mx:Application layout="absolute" width="100%" height="100%" xmlns:mx="http://www.adobe.com/2006/mxml">
       <mx:Script><![CDATA[    
        import flash.net.URLRequest;    
        import mx.managers.PopUpManager;    
        /* Функция для отображения всплывающего окна, в котором находиться информация о вашем чаре */    
        public function prof():void {    
         var popup:profil = profil(PopUpManager.createPopUp(this, profil, false));    
         popup.x = 250;    
         popup.y = 100;    
         popup.title = "Профиль";    
        }    
        /* Функция которая переадресовывает на php скрипт? Который обрабатывает выход игрока */        
        private function logout():void {    
         var logoutLink:URLRequest = new URLRequest("logout.php");    
         navigateToURL(logoutLink, "_self");    
        }        
      public function invent():void {    
         var popupInv:inventar = inventar(PopUpManager.createPopUp(this, inventar, false));    
         popupInv.x = 410;    
         popupInv.y = 100;    
         popupInv.title = "Инвентарь";    
        }
        ]]></mx:Script>
       <mx:SWFLoader source="chat.swf" x="0" width="1024" height="248" top="520"/>
       <mx:SWFLoader source="GameField.swf" x="0" y="0" width="1024" height="520"/>
       <mx:Button label="Инвентарь" click="invent()" x="69" y="7" width="100" height="22"/>
       <mx:Button label="Квесты" x="482" y="7" width="100" height="22"/>
       <mx:Button label="Профиль" click="prof()" x="275" y="7" width="100" height="22"/>
       <mx:Button label="Выход" click="logout()" x="691" y="7" width="100" height="22"/>
</mx:Application>

коментить не буду всё и так понятно, есть одно но
кнопки Инвентарь Квесты Профиль и другое(что у вас будет) должны идти ПОСЛЕ строк GameField иначе GameField окажется сверху и вы не увидите окошек
P.S. для того чтобы скомпилимить сиё вы должны уже иметь файлы profil.swf и inventar.swf в листе иначе ссылки не дойдут и вы не сможете скомплимить(эти файлы есть в уроках асасина)

Надеюсь вам помогло, это должно работать в 100 из 100 случаев

Добавлено (22.03.2010, 06:26)
---------------------------------------------
надеюсь помогу кому нибудь...
но у меня есть встречный вопрос, как связать ссесию с табличкой online offline(0,1)? тоесть если сессия игрока разорвана в базе должно меняться значение с 1 в 0(с 0 в 1 уже реализовано, теперь нужно связать с сесией выход игрока) я просто не знаю как это сделать(я не знаю где прописывается разрыв сесии)
Многие не пользуются кнопкой Выход и просто закрывают страницу, (я добавил кто онлайн рядом с чатом и там отображаются ники тех кто в сети(хотя их давно там нет))
Надеюсь мне помогут...

Добавлено (22.03.2010, 07:00)
---------------------------------------------
да и кто может написать функцию на смену GameField?
private function cmena():void {
???????????????
... смена должна быть с GameField.swf на GameField2.swf
}

тоесть что то типа перехода с локации на локацию... если кто то даст ответ то завалю +!

Сообщение отредактировал hellground - Понедельник, 22 Марта 2010, 06:22
B1zDelKinДата: Понедельник, 22 Марта 2010, 14:50 | Сообщение # 2
частый гость
Сейчас нет на сайте
Чего вы флудите-то не по делу? На отвеченный Вами вопрос уже наверное с месяц зияет на форуме в соответсвующей теме ответ.

А для 2-х мелкий вопросюсиков, которые Вы задали самое место в отдельном посте, а не как не в отдельной теме.
Тем более, что на один из них ответ уже дан, при чем раньше чем создана эта тема.

Касательно второго:

В SWFLoader'е который загружает GameField параметру source надо задать значение {page} для привязки данных.
В начале АС нужно добавить переменную [Bindable] private var page:String = "";

Тегу Application добавить обработчик события applicationComplete Или creationComplete = "loadPage()"

Сама функция:

public function loadPage():void
{
load.send();
}

аШТиТиПи сервис для функции:

<mx:HTTPService id="load" result="onLoadResult(event)" url="путь к файлу location.php" method="POST"/>

Функция результрующая:

private function onLoadResult(e:ResultEvent):void
{
page = String(e.result);
}

Теперь будет загружаться та флешка, урл которой придет с сервера.
Файл location.php:

Code
<?php session_start();

$user = $_SESSION['user'];

include "путь к базе";

$res = mysql_query ("select `location` from `users` where `user`='$user'");
$row = mysql_fecth_array ($res);

echo $row['location'];

?>

Ну и чтобы наладить навигацию... В той флешке из которой вы хотите уйти. Создаем близнеца переменной указанной выше.

Кнопачке перехода задаем обработчик goTo("флешка в которую хотим зайти").

Сама функция:

private function goTo(place:String):void
{
page = place;
goto.send();
}

аШТиТиПи:

<mx:HTTPService id="goto" method="POST" result="onGoToResult(event)" url="путь к newlocation.php">
<mx:Request>
<mx:page>
{page}
</mx:page>
</mx:Request>
</mx:HTTPService>

Результирующая функция:

private function onGoToResult(e:ResultEvent):void
{
FlexGlobals.topApplication.loadPage();
}

Функция вызовет функцию, которая обновит текушую флешку.

PHP newlocation.php:

Code
<?php
session_start();

$user = $_SESSION['user'];

$page = $_POST['page'];

$res = mysql_query ("update `users` set `location`='$page' where `user`='$user'");

?>

Всего то и делов

Сообщение отредактировал B1zDelKin - Понедельник, 22 Марта 2010, 15:04
AssasinДата: Понедельник, 22 Марта 2010, 14:59 | Сообщение # 3
web-coder
Сейчас нет на сайте
Хех, товарищ B1zDelKin немного меня опередил happy
B1zDelKinДата: Понедельник, 22 Марта 2010, 15:05 | Сообщение # 4
частый гость
Сейчас нет на сайте
А потом еще и добавил! )
DizelistДата: Суббота, 20 Ноября 2010, 16:32 | Сообщение # 5
частый гость
Сейчас нет на сайте
про перемешение несовсем понятно что куда вписывать,можно по подробнее?)
Форум игроделов » Движки для разработки игр и сложные системы разработки » Движки для браузерных игр » Проблема с непостоянным отображением окон в уроках Assasin'a (их решение)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг