Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Popup окно при клике по кнопке и подгрузука динамического текста. (http://www.flasher.ru/forum/showthread.php?t=117680)

Christina 03.11.2008 01:55

Popup окно при клике по кнопке и подгрузука динамического текста.
 
Здравствуйте.:bye:
Ребят, нужна помощь.
Ситуация такая:
Я делаю сайт-визитку. На главной сцене домашней странички есть блок "горячих" новостей, под каждой новостью есть кнопка "Подробнее", при щелчке на ней появляется popup окошко, в него подгружается текст из внешнего txt файлика. Этот текст у меня скроллится. (посмотреть можно тут: http://www.mjon-line.com/artem/index.html, на дизайн внимание не обращайте, красоту пока особо не наводила)
Но проблема вот в чем:
Сейчас подгрузка текста происхот прям в мувике с динамическим текстом так:
Код:

myData = new LoadVars();
myData.onLoad = function(){
        date1.text = this.date1;
}
myData.load("news.txt");
stop();

А я хочу, чтоб в зависимости от того, какую кнопку нажал юзер ( на главной сцене) в это динамическое поле(popup окошка) грузилась соответствующая инфа (то есть при нажатии,скажем, первой кнопки "Подробнее" в текстовое поле date1 грузилась бы переменная из текстового файлика date1, а при щелчке на другую кнопку "Подробнее" в этоже текстовое поле date1 при клике грузилась уже другая инфа - date2, но из того же текстового файла news.txt с сожержимым date1=blablabla&date2=tratata) и не знаю как это реализовать.
Структура такая : на главной сцене кнопки "Подробнее", в библиотеке есть мувик с попап окном popup_mc, в нем мувик с контентом content_mc и в нем динамическое поле date1.
Еще раз вопрос:
Как заставить зрузиться разную инфу при нажатии разных кнопок с главной сцены, не создавая при этом новых клипов и кадров, в динамическое текстовое поле?
В архивчике мой исходник, посмотрите, пожалуйста, если не трудно:umnik2:http://www.mjon-line.com/artem/artem.rar
Извиняюсь, если непонятно объяснила, если что-то не ясно, спрашивайте, я с радостью отвечу. Просто я уже измучила Google и скорее всего не могу найти ответ на свой вопрос, по-скольку делаю кривой запрос. Вся надежда на Вас.

storm_ 03.11.2008 03:56

Код:

myData = new LoadVars();
myData.onLoad = function() {
        date1.text = this.date1;
};
myData.load("news.txt");
//Допустим, есть пара кнопок: today, about…
//Каждой кнопке соответствует свой текстовой файлик :today.txt, about.txt…
//Итак:
today.OnRelease = function() {
        myData.load("today.txt");
};
about.OnRelease = function() {
        myData.load("today.txt");
};
stop();
//Вот и все… :)


Christina 03.11.2008 04:05

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

все работает
но я вот подумала, что через некоторе время таких новостей будет очень много... не делать же сотни текстовых файликов.
А можно как-то сделать так, чтоб число текстовиков, мувиков и кадров не возрастало. Еще учесть, что мувик с динамическим полем не на гланой сцене находится.
У меня знания не хватает к сожалению сделать это самой.
Вот если можно былоб в кнопке написать код, типа "при нажатии на кнопку загрузить в переменную клипа popup_mc клипа content_mc динамического поля date1 содержимое нужной переменной внешнего файла + код аттачМуви(popup_mc)".
И такой код к каждой кнопке, только с разными значениями переменной содержимого текстового файла. Таким образом у меня получился бы только 1 текстовик и только небольшие кусочки кода на будущих кнопочках.
Такое реально сделать? Хотябы чисто теоретически? Если да, то подскажите, как реализовать на практике

Разобралась!
Если вдруг у кого-то случится подобная ситуация, покажу как сделала я:
на кнопках "Подробнее" на главной сцене я только писала следующий код:
Код:

on (press) {
        this.attachMovie("popup_mc", "window", 0);
        window._x = 385;
        window._y = 500;
}
on (release) {
    loadText = new LoadVars();
    loadText.load("news.txt");
    loadText.onLoad = function(success) {
        if (success) {
            _root.window.text_mc.date1.text = true;
            _root.window.text_mc.date1.text = this.date1;
        }_
    };
}

где значение, выделенное красным я просто заменяла на нужное из моего текстового файлика для каждой кнопки и все работает!

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

text_mc.setMask(mask_popup_mc)
var scrollUpper:Number = -116;
var scrollLower:Number = 113;

var textLower:Number = -116;
var textUpper:Number = -376;
var scrollRange:Number = scrollLower - scrollUpper;
var textRange:Number = textLower - textUpper;

function scroll(){
        var moved:Number = scroller_mc._y - scrollUpper;
        var petMoved:Number = moved/scrollRange;
        var textMove:Number = petMoved*textRange;
        text_mc._y = textLower - textMove;
}

scroller_mc.onPress = function(){
        this.startDrag(false,this._x,scrollUpper,this._x,scrollLower);
    this.onMouseMove = scroll;
        }
scroller_mc.onRelease = scroller_mc.onReleaseOutside = function(){
        this.stopDrag();
        this.onMouseMove = null;
}
mouseListener = new Object();
mouseListener.onMouseWheel = function(delta) {
  text_mc._y += delta*3;
  scroller_mc._y -= delta*3;
  if(text_mc._y<-376){
          text_mc._y = textUpper;}
  if(text_mc._y>-116){
          text_mc._y= textLower;}
if(scroller_mc._y>113){
        scroller_mc._y = scrollLower;}
if(scroller_mc._y<-116){
        scroller_mc._y = scrollUpper;}
}
Mouse.addListener(mouseListener);

просто я написала
Код:

date1.autosize =  true;
и изменений не произошло никаких. Думаю, что из-за привязки к координатам по у( типа динамическое поле может быть и сокращается, но скролл тащит это самое поле до прописанных ему -376 по у.) Как быть?

Wolsh 03.11.2008 14:55

Честно говоря, я бы сделал все по-другому((((
Во-первых, использовал бы xml вместо текста и loadVars. Да, понимаю что с этим придется разбираться... Но оно того стоит.
В Вашем же варианте все можно было сделать проще - текстовик с блоками новостей загрузить ОДИН(!) раз, считать блоки текста в массив и обращаться к ним при нажатии на кнопки.
Что касается "жесткого" скроллера - это, конечно, не порядок.
Посмотрите темки, если время разбираться еще есть) Если нет - обязательно посмотрите потом, скроллер такая штука что в каждом сайте используется, надо научиться их делать. Удачи!
скроллер с исходниками:
http://flasher.ru/forum/showthread.php?t=111891
объяснение формулы)) :
http://www.flasher.ru/forum/showpost...48&postcount=6

Christina 03.11.2008 15:42

Wolsh, дык я не спорю, что xml рулит :) Но есть оч весское объяснение, почему я использую txt, Я - НУБ =))))))Честно говоря, у меня огромное желание всему научиться, поэтому с удовольствием изучу и впоследствии использую исходники, которые вы мне указали. Просто у меня грядет создание галереи и там-то вот я не знаю, как без xml оботись. Ибо не хочу грузить фотки и превьюшки в флэш. Хочу просто в xml указать пути, а из флеша обратиться к этому файлику и грузить картинки в пустой мувик с програмным уменьшением размера (для превью).
Просто это первый мой сайт во флэш.
Но в данный момент у меня огромные проблемы с загрузкой xml...я мало разобралась, да и спросить не у кого, только здесь на форуме.
Если б я жила у себя на Родине, то давно пошла на курсы!

В любом случае спасибо! Если появятся проблемы и затруднения с Вашео разрешения я тут еще напишу :)

Добавлено через 2 часа 20 минут
А меня заинтересовало, почему один раз грузить все в массив?какое преимущество это даст?

Wolsh 03.11.2008 20:29

Довольно странно загружать весь ТХТ каждый раз, когда нужна одна строчная переменная из него. Уже загруженная! У некоторых людей отключен кэш в браузере, и Ваш файл действительно будет грузиться. В конце концов, это просто нелогично, неоптимально и не по-взрослому)) Загрузили один раз и пользуйтесь. Массив - да просто для удобства. Можно и по-другому - каждый раз обращаться к объекту loadVars, дергая из него нужную переменную-текст, или разбить полученные данные на отдельные переменные, не собранные в массив... В целом как угодно, но лучше когда однотипные данные хранятся вместе и проиндексированы. Т.е. массив.

Christina 11.02.2009 14:53

Здравствуйте еще раз!
Опять нужна помошь:rolleyes:.
Делаю галлерею с превьюшками, при клике на которых раскрывается фото.
Делаю не через xml, потому что пока не умею. А проблема собственно вот в чем:
при клике на превьюшке должна проигрыватся сначала анимация открытия фона окна для фото, а потом должна подгрузиться сама фото. Но на деле, фото и анимация начинают грузиться одновременно.(открывается фото, а за ним играется анимация появления фона). Фото подгружается в пустой мувик photo. Но если я смещаю кадр с этим мувиком на любой , кроме первого фрейма, фото перестает грузиться. А мне нужно чтоб загрузка фото начиналась с 25 кадра.
Вопрос такой, как не меняя сильно того, что есть, начать загрузку фото, после проигрыша анимации раскрытия фона окна.

Файл с исходником прикрепляю.

Заранее благодарю за любую помощь:D


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

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