Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Массив ссылок и навигация (http://www.flasher.ru/forum/showthread.php?t=139934)

palaten4iko 15.05.2010 11:42

Массив ссылок и навигация
 
есть динамическое текстовое поле в котрое подгружается текст из html кода страниц. Также есть кнопка "содержание" и кнопки "листать вперед и назад".
Так вот подскажите как сделать так,чтобы после того как я перейду по ссылке со страницы содержание на какую нить 25 страницу, и нажав "вперед" - флеш не перекидывал меня снова на самую первую страницу???


Так вот как мне подсказали это надо сделать с массивом, вот что вышло: (это уже с массивом код,но нехрена не работает)

Код AS3:

import flash.events.Event;
import flash.net.URLRequest;
//ссылки на страницы
 
var request00:URLRequest = new URLRequest("priv.html");
var request01:URLRequest = new URLRequest("text0.html");
var request02:URLRequest = new URLRequest("text1.html");
var request03:URLRequest = new URLRequest("text2.html");
var request04:URLRequest = new URLRequest("text3.html");
 
//создаем объект-загрузчик
 
var pages:Array = new Array("text0.html");// создаем массив, первый элемент вписываем
 
var loader1:URLLoader = new URLLoader();
//грузим в него титульную страницу, которая будет отображаться при запуске приложения
loader1.load(request00);
//слушаем, когда загрузка окончится
loader1.addEventListener(Event.COMPLETE, requestComplete1);
//при нажатии данных кнопок выполняется переход по страницам вперед и назад
but1.addEventListener(MouseEvent.CLICK, onClickForward);
but2.addEventListener(MouseEvent.CLICK, onClickBack);
 
var i:uint = 1;
 
function onClickForward(e:MouseEvent):void
{
  i += 1;
  if (i > 4)
  {
      i = 4;
  }
  var url:URLRequest = new URLRequest(String("text" + String(i) + ".html"));
  // loader1.unload();
  loader1.load(url);
  loader1.addEventListener(Event.COMPLETE, requestComplete1);
}
 
function onClickBack(e:MouseEvent):void
{
  i -= 1;
  if (i <= 0)
  {
                i = 1;
  }
  var url:URLRequest = new URLRequest(String("text" + String(i) + ".html"));
  //loader1.unload();
  loader1.load(url);
  loader1.addEventListener(Event.COMPLETE, requestComplete1);
}
 
function clickHandler(e:TextEvent):void {
//e.text - содержание ссылки
loader1.load(new URLRequest(e.text));
pages.push(e.text);
}
 
function goBack(e:MouseEvent):void{
pages[pages.length-2]
loader1.load(new URLRequest(String(pages[pages.length-2])));
loader1.addEventListener(Event.COMPLETE, requestComplete1);
pages.push(pages[pages.length-2]);
 
 
}
//по окончании загрузки 
function requestComplete1(e:Event):void{
  //отображаем загруженный текст в текстовом поле
  output_txt.htmlText = e.target.data;
  }

Помогите,что здесь исправить нужно?

Wolsh 15.05.2010 13:25

Может начать писать в классах? Сайт это не мультик, и даже не банер.. как можно строить приложение - в кадрах?? Налицо беспорядок с видимостью переменных.

palaten4iko 15.05.2010 16:24

я не сайт делаю..а эл.учебник как бэ... я знаю что беспорядок,но у меня нет времени практически изучат ьскрит,так как диплом сдавать через неделю( .. поэтому и прошу помочь...

Wolsh 15.05.2010 17:31

Если я правильно понял (что затруднительно - по два обработчика непонятно чего, что такое кликХендлер, что такое гоБэк и кликБэк хендлеры.. Вы бы объясняли, мы ж не телепаты), Вам надо при клике в "содержании" задать значение для i (назовите свойства говорящими именами - самому же легче будет). Оно ведь по-умолчанию 0, и когда кликаете дальше - он и листает дальше. Т.е. кликнули 25-ю страницу - надо задать что i = 25. А уж где у Вас обработчик кликов "содержание" - я понятия не имею.

palaten4iko 15.05.2010 19:42

ээм... я сам честно с трудом понимаю этот массив,потмоу что не я его писал.. только остальное в коде могу разьяснить...


функции onClickForward и onClickback это как раз листание страниц учебника вперед и назад...

вот код без массива вабще,полностью рабочий,который как раз просто листает страницы:

Код AS3:

import flash.events.Event;
import flash.net.URLRequest;
//ссылки на страницы
 
var request00:URLRequest = new URLRequest("priv.html");
var request01:URLRequest = new URLRequest("text0.html");
var request02:URLRequest = new URLRequest("text1.html");
var request03:URLRequest = new URLRequest("text2.html");
var request04:URLRequest = new URLRequest("text3.html");
 
//создаем объект-загрузчик
 
var loader1:URLLoader = new URLLoader();
//грузим в него титульную страницу, которая будет отображаться при запуске приложения
loader1.load(request00);
//слушаем, когда загрузка окончится
loader1.addEventListener(Event.COMPLETE, requestComplete1);
//при нажатии данных кнопок выполняется переход по страницам вперед и назад
but1.addEventListener(MouseEvent.CLICK, onClickForward);
but2.addEventListener(MouseEvent.CLICK, onClickBack);
 
var i:uint = 1;
 
function onClickForward(e:MouseEvent):void
{
  i += 1;
  if (i > 4)
  {
      i = 4;
  }
  var url:URLRequest = new URLRequest(String("text" + String(i) + ".html"));
  // loader1.unload();
  loader1.load(url);
  loader1.addEventListener(Event.COMPLETE, requestComplete1);
}
 
function onClickBack(e:MouseEvent):void
{
  i -= 1;
  if (i <= 0)
  {
                i = 1;
  }
  var url:URLRequest = new URLRequest(String("text" + String(i) + ".html"));
  //loader1.unload();
  loader1.load(url);
  loader1.addEventListener(Event.COMPLETE, requestComplete1);
}
 
 
 
 
 
 
}
//по окончании загрузки 
function requestComplete1(e:Event):void{
  //отображаем загруженный текст в текстовом поле
  output_txt.htmlText = e.target.data;
  }

А вот код как раз страницы "содержание", ну тоесть кароче ссылки на главы (страницы) учебника:

Код AS3:

import flash.events.Event;
import flash.net.URLRequest;
//ссылки на разделы
var requestSod:URLRequest = new URLRequest("Sod.html");
 
//создаем объект-загрузчик
var loaderSod:URLLoader = new URLLoader();
 
//при нажатии данных кнопок выполняются определенные функции, в данном случае происходит загрузка страницы
sod_btn.addEventListener(MouseEvent.CLICK, onClickSod);
 
 
output_txt.addEventListener(TextEvent.LINK,_onTxtLinkSelected);
 
//сами функции,
function onClickSod(e:MouseEvent):void{
 
        loaderSod.load(requestSod);//грузим первую страницу
        loaderSod.addEventListener(Event.COMPLETE, requestCompl);//ждем окончания загрузки
 
        }
 
 
 
 
 function _onTxtLinkSelected(e:TextEvent):void{
    var url:URLRequest = new URLRequest(e.text);
    loader1.load(url);
    loader1.addEventListener(Event.COMPLETE, requestComplete1);
}
        //по окончании загрузки       
function requestCompl(e:Event):void{
        //отображаем загруженный текст в текстовом поле
        output_txt.htmlText="<a href='event:text0.html'>первая</a>"+
      "<br><a href='event:text1.html'>вторая</a>"+
      "<br><a href='event:text2.html'>третья</a>"+
      "<br><a href='event:text3.html'>четвертая</a>";
 
 
}

в нём я вабще незнаю что добавлять..

incvizitor 15.05.2010 20:05

Я не знаю будет ли работать так, потому что мне не понятно взаимодействие между собой двух кусков кода.

Код AS3:

import flash.events.Event;
import flash.net.URLRequest;
//ссылки на страницы
 
//var request00:URLRequest = new URLRequest("priv.html");
//var request01:URLRequest = new URLRequest("text0.html");
//var request02:URLRequest = new URLRequest("text1.html");
//var request03:URLRequest = new URLRequest("text2.html");
//var request04:URLRequest = new URLRequest("text3.html");
 
var requests:Array=["priv.html","text0.html","text1.html","text2.html","text3.html"];
 
//создаем объект-загрузчик
 
var loader1:URLLoader = new URLLoader();
//грузим в него титульную страницу, которая будет отображаться при запуске приложения
loader1.load(request00);
//слушаем, когда загрузка окончится
loader1.addEventListener(Event.COMPLETE, requestComplete1);
//при нажатии данных кнопок выполняется переход по страницам вперед и назад
but1.addEventListener(MouseEvent.CLICK, onClickForward);
but2.addEventListener(MouseEvent.CLICK, onClickBack);
 
var i:uint = 1;
 
function onClickForward(e:MouseEvent):void
{
  i += 1;
  if (i > 4)
  {
      i = 4;
  }
  var url:URLRequest = new URLRequest(requests[i]);
  // loader1.unload();
  loader1.load(url);
  loader1.addEventListener(Event.COMPLETE, requestComplete1);
}
 
function onClickBack(e:MouseEvent):void
{
  i -= 1;
  if (i <= 0)
  {
                i = 1;
  }
  var url:URLRequest = new URLRequest(requests[i]);
  //loader1.unload();
  loader1.load(url);
  loader1.addEventListener(Event.COMPLETE, requestComplete1);
}
 
 
 
 
 
 
}
//по окончании загрузки 
function requestComplete1(e:Event):void{
  //отображаем загруженный текст в текстовом поле
  output_txt.htmlText = e.target.data;
  }

Код AS3:

import flash.events.Event;
import flash.net.URLRequest;
//ссылки на разделы
var requestSod:URLRequest = new URLRequest("Sod.html");
 
//создаем объект-загрузчик
var loaderSod:URLLoader = new URLLoader();
 
//при нажатии данных кнопок выполняются определенные функции, в данном случае происходит загрузка страницы
sod_btn.addEventListener(MouseEvent.CLICK, onClickSod);
 
 
output_txt.addEventListener(TextEvent.LINK,_onTxtLinkSelected);
 
//сами функции,
function onClickSod(e:MouseEvent):void{
 
        loaderSod.load(requestSod);//грузим первую страницу
        loaderSod.addEventListener(Event.COMPLETE, requestCompl);//ждем окончания загрузки
 
        }
 
 
 
 
 function _onTxtLinkSelected(e:TextEvent):void{
    i=requests.indexOf(String(e.text));
    var url:URLRequest = new URLRequest(e.text);
    loader1.load(url);
    loader1.addEventListener(Event.COMPLETE, requestComplete1);
}
        //по окончании загрузки       
function requestCompl(e:Event):void{
        //отображаем загруженный текст в текстовом поле
        output_txt.htmlText="<a href='event:text0.html'>первая</a>"+
      "<br><a href='event:text1.html'>вторая</a>"+
      "<br><a href='event:text2.html'>третья</a>"+
      "<br><a href='event:text3.html'>четвертая</a>";
 
 
}


Wolsh 15.05.2010 20:28

Добавьте ссылки на все страницы в массив, а в содержании - в event только индекс массива, по которому находится ссылка на эту страницу.

Код AS3:

import flash.events.Event;
import flash.net.URLRequest;
//ссылки на страницы
var pages:Array = ["priv.html", "text0.html", text1.html, "text2.html", "text3.html"];
 
//создаем объект-загрузчик
var loader1:URLLoader = new URLLoader();
//грузим в него титульную страницу, которая будет отображаться при запуске приложения
loader1.load(new URLRequest(pages[0]));
var i:uint = 0;
//слушаем, когда загрузка окончится
loader1.addEventListener(Event.COMPLETE, requestComplete1);
//при нажатии данных кнопок выполняется переход по страницам вперед и назад
but1.addEventListener(MouseEvent.CLICK, onClickForward);
but2.addEventListener(MouseEvent.CLICK, onClickBack);
 
 
function onClickForward(e:MouseEvent):void
{
  i = Math.min(i + 1, 3);
  var url:URLRequest = new URLRequest(pages[i]);
  loader1.load(url);
  loader1.addEventListener(Event.COMPLETE, requestComplete1);
}
 
function onClickBack(e:MouseEvent):void
{
  i = Math.max(i - 1, 0);
  var url:URLRequest = new URLRequest(pages[i]);
  //loader1.unload();
  loader1.load(url);
  loader1.addEventListener(Event.COMPLETE, requestComplete1);
}
 
function clickHandler(e:TextEvent):void {
//e.text - содержание ссылки
loader1.load(new URLRequest(pages[Number(e.text)]));
}
/* не знаю что это.
function goBack(e:MouseEvent):void{
loader1.load(new URLRequest(String(pages[pages.length-2])));
loader1.addEventListener(Event.COMPLETE, requestComplete1);
pages.push(pages[pages.length-2]);
 
 
}*/

//по окончании загрузки 
function requestComplete1(e:Event):void{
  //отображаем загруженный текст в текстовом поле
  output_txt.htmlText = e.target.data;
  }



Код AS3:

 function _onTxtLinkSelected(e:TextEvent):void{
      i = Number(e.text);
      var url:URLRequest = new URLRequest(pages[i]);
      loader1.load(url);
      loader1.addEventListener(Event.COMPLETE, requestComplete1);
}
        //по окончании загрузки       
function requestCompl(e:Event):void{
        //отображаем загруженный текст в текстовом поле
        output_txt.htmlText=
            "<a href='event:0'>первая</a>"+
      "<br><a href='event:1'>вторая</a>"+
      "<br><a href='event:2'>третья</a>"+
      "<br><a href='event:3'>четвертая</a>";
}


palaten4iko 15.05.2010 21:01

Wolsh спасибо огроменное вам!!! очень помогли,работает как надо!!!


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

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