Форум 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)
-   -   OnRelease на динамическом тексте (http://www.flasher.ru/forum/showthread.php?t=177758)

DavX 07.04.2012 22:36

OnRelease на динамическом тексте
 
Вложений: 1
Доброго дня, уважаемые флешеры.
Помогите пожалуйста, весь день другился не могу на динамическом тексте, созданном createTextField-ом поставить onRelease.

кусок кода:

создается мувик
Код AS1/AS2:

           btn_mc = createEmptyMovieClip("btn"+i, i);
        btn_mc._alpha = 40;

в нем текст
Код AS1/AS2:

        txt_mc = btn_mc.createTextField("txt", i, 10, 13, 130, 0);
        txt_mc.autoSize = "center";
        txt_mc.type = "static";
        txt_mc.setNewTextFormat(FRM);       
        txt_mc.textColor = 0x9C8471 ;
        txt_mc.text = var_gamename[i];

Делаю так не получается :(
Код AS1/AS2:

        txt_mc.onRelease = function() { ... my code ... }

необходимо программно на тексте поставить onrelease = function() { ... my code ... }
На сам мувик получается, а на тексты нет :(
Либо если на тексты не возможно, нужно как то создать доп. невидимые мувики поверх основного , поверх каждого текста. Так как у каждого текста свое действие.

Вложение 27800
Сам скрипт весь прикрепил (нужный код в: Scene1 >> Symbol 2 >> files_list2 >> fortextfiles2)

Заранее ОЧЕНЬ БЛАГОДАРЕН БУДУ!!!

mooncar 08.04.2012 00:25

1. У вас исходник в версии 5.5, у многих не откроется. Пересохраните помладше.

2.
Цитата:

Сообщение от DavX (Сообщение 1073637)
Делаю так не получается :(
Код AS1/AS2:

        txt_mc.onRelease = function() { ... my code ... }


Чтобы попусту не тратить время, нужно использовать справку.
Открываем нужный класс и видим, что события onRelease у TextField нет.

3. Значения static у свойства type нет, это вы тоже придумали. Без этой строки можно вообще обойтись, по умолчанию будет dynamic, что и требуется.

4. Положите в библиотеку мувик с прозрачной заливкой и аттачте его в нужных координатах хоть поверх, хоть под текстовым полем. На него и следует вешать обработчик события onRelease.
Основная задача - задать ему нужные размеры под размер текста. Отсюда вывод - делать это следует уже после добавления текста, приравнивая _width и _height, определенные по аналогичным свойствам поля.

5. Свойство selectable у поля надо установить в false, чтобы не возникал курсор, который может помешать.

DavX 08.04.2012 01:34

Вложений: 1
Цитата:

Сообщение от mooncar (Сообщение 1073645)
4. Положите в библиотеку мувик с прозрачной заливкой

Вот как раз его и не получилось наложить над текущими мувиками (
Пересохранил: Вложение 27801

Sergey_A 09.04.2012 15:53

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

DavX 09.04.2012 21:30

События
 
Цитата:

Сообщение от Sergey_A (Сообщение 1073876)
А почему нельзя это событие вешать на мувик btn_mc? Или, если там еще что планируется вставлять, вставляйте в btn_mc еще один пустой мувик, в который всталяете текстовое поле, и на этот мувик вешаете событие.

Не получается в мувике мувик, так как в основном(верхнем) btn_mc уже поставлены 2 события при моусеовер и аут. Из за этого во внутреннем не получается поставить событие.

Из за вот этого:
Код AS1/AS2:

btn2_mc.onRollOver = function() {
                new Tween(this, "_alpha", mx.transitions.easing.Regular.easeOut, 40, 100, 0.5, true);
        };
        btn2_mc.onRollOut = function() {
                new Tween(this, "_alpha", mx.transitions.easing.Regular.easeOut, 100, 40, 0.5, true);
        };

Добавлено через 54 минуты
Вот такой код не работает собственно
Код AS1/AS2:

        url2_mc = btn2_mc.createEmptyMovieClip("url2"+i, i);        
        with (url2_mc) {
                beginFill(0x000000);
                moveTo(0,0);
                lineTo(120,0);
                lineTo(120,44);
                lineTo(0,44);
                lineTo(0,10);
                endFill();
        }
        url2_mc._alpha = 50;
        url2_mc._x = 0;
        url2_mc._y = 44*i;
 
        url2_mc.onRelease = function() {
                getURL("http://ya.ru");
        }

Неужели ни у кого нету решений?(

Sergey_A 10.04.2012 12:53

Ну, а что же вы хотите? Чтобы два мувика один в другом по разному на одно и то же событие реагировали? Есть впрочем, вариант, не знаю, насколько подходящий для вас - определить область реагирования каждого мувика (внутреннего и внешнего) с помощью MovieClip.hitArea так, чтобы они не перекрывались.

DavX 11.04.2012 22:01

Вложений: 1
Блин!! Не получается никак. Маленький прогресс есть, теперь создал мувик внутри основного мувика, и на нем поставил, чтоб при нажатии открывалась страница, а при onRollOver у головново мувика альфа становится 10%.
Теперь передстал перед такой проблеммой, динамично создаются 7 строк, и при rollOver на любой, высвечивается последний (

Код AS1/AS2:

import mx.transitions.easing.*;
import mx.transitions.Tween;
 
function newXMLfile () {
        tourlistXML = new XML();//Объект XML
        tourlistXML.ignoreWhite = true;
        tourlistXML.onLoad = loadtourlistXML;
        tourlistXML.load("xml/"+_root.filename_tours); //Загружаем XML
        linecol = 1;
        lh = 0;
}
newXMLfile();
setInterval(newXMLfile,500);
 
var2_gamename = new Array();
var2_gameurl = new Array();
var2_name = new Array();
var2_mode = new Array();
var2_start = new Array();
var2_fee = new Array();
var2_prise = new Array();
var2_commands = new Array();
var2_applic = new Array();
var2_desc = new Array();
var2_descurl = new Array();
loading._x = 500;
loading._y = 120;
loading._visible = true;
 
url_x1 = new Array();
url_x2 = new Array();
url_y1 = new Array();
url_y2 = new Array();
url_target = new Array();
 
function str_replace(haystack, needle, replacement) {
        temp = haystack.split(needle);
        return temp.join(replacement);
}
function html_generate(haystack) {
        haystack = str_replace(haystack,"[br]","<br>");
        haystack = str_replace(haystack,"","<b>");
        haystack = str_replace(haystack,"
","</b>");
        haystack = str_replace(haystack,"","<i>");
        haystack = str_replace(haystack,"
","</i>");
        haystack = str_replace(haystack,"","<u>");
        haystack = str_replace(haystack,"
","</u>");
        haystack = '<span style="text-align: right;">'+haystack+'</span>';
        return haystack;
}
 
function loadtourlistXML(loaded) { //После загрузки
        if (loaded) {  //Если загрузка успешна
          loading._visible = false;
          xmlNode = this.firstChild; //Открываем первый тег ХМЛ
          for (var i=0; i<tourlistXML.childNodes.length; i++) { //Цикл создания массивов
 
                  var2_gamename[i] =        this.childNodes[i].childNodes[0].childNodes[0].nodeValue;
                  var2_gameurl[i] =        this.childNodes[i].childNodes[1].childNodes[0].nodeValue;
                  var2_name[i] =                this.childNodes[i].childNodes[2].childNodes[0].nodeValue;
                  var2_mode[i] =                this.childNodes[i].childNodes[3].childNodes[0].nodeValue;
                  var2_start[i] =                this.childNodes[i].childNodes[4].childNodes[0].nodeValue;
                  var2_fee[i] =                this.childNodes[i].childNodes[5].childNodes[0].nodeValue;
                  var2_prise[i] =                this.childNodes[i].childNodes[6].childNodes[0].nodeValue;
                  var2_commands[i] =        this.childNodes[i].childNodes[7].childNodes[0].nodeValue;
                  var2_applic[i] =                this.childNodes[i].childNodes[8].childNodes[0].nodeValue;
                  var2_desc[i] =                this.childNodes[i].childNodes[9].childNodes[0].nodeValue;
                  var2_descurl[i] =        this.childNodes[i].childNodes[10].childNodes[0].nodeValue;
 
        // Создание динамических кнопок блока "Последние Видео"
        btn2_mc = createEmptyMovieClip("btn2"+i, i);
 
        // Style
        var FRM:TextFormat = new TextFormat();
        FRM.size = 12;
        FRM.align = "center";
        btn2_mc._alpha = 40;
 
        txt2_mc = btn2_mc.createTextField("txt200", (i+200), 10, 13, 100, 0);       
        txt2_mc.autoSize = "center";
        txt2_mc.setNewTextFormat(FRM);
        txt2_mc.selectable = false;
        txt2_mc.textColor = 0x9C8471 ;
        txt2_mc.html = true;
        txt2_mc.multiline = true;
        txt2_mc.htmlText = html_generate(var2_gamename[i]);
 
        txt2_mc2 = btn2_mc.createTextField("txt201", (i+201), 130, 13, 130, 0);
        txt2_mc2.autoSize = "center";
        txt2_mc2.setNewTextFormat(FRM);
        txt2_mc2.textColor = 0xD9C580;
        txt2_mc2.selectable = false;
        txt2_mc2.html = true;
        txt2_mc2.multiline = true;
        txt2_mc2.htmlText = html_generate(var2_name[i]);
 
        txt2_mc3 = btn2_mc.createTextField("txt202", (i+202), 310, 13, 50, 0);
        txt2_mc3.autoSize = "center";
        txt2_mc3.setNewTextFormat(FRM);
        txt2_mc3.selectable = false;
        txt2_mc3.textColor = 0x9C8471 ;
        txt2_mc3.text = var2_mode[i];
 
        txt2_mc4 = btn2_mc.createTextField("txt203", (i+203), 410, 13, 75, 0);
        txt2_mc4.autoSize = "center";
        txt2_mc4.setNewTextFormat(FRM);
        txt2_mc4.selectable = false;
        txt2_mc4.textColor = 0x9C8471 ;
        txt2_mc4.text = var2_start[i];
 
        txt2_mc5 = btn2_mc.createTextField("txt204", (i+204), 520, 13, 50, 0);
        txt2_mc5.autoSize = "center";
        txt2_mc5.setNewTextFormat(FRM);
        txt2_mc5.selectable = false;
        txt2_mc5.textColor = 0x9C8471 ;
        txt2_mc5.text = var2_fee[i];
 
        txt2_mc6 = btn2_mc.createTextField("txt205", (i+205), 575, 13, 70, 0);
        txt2_mc6.autoSize = "center";
        txt2_mc6.setNewTextFormat(FRM);
        txt2_mc6.selectable = false;
        txt2_mc6.textColor = 0x9C8471 ;
        txt2_mc6.text = var2_prise[i];
 
        txt2_mc7 = btn2_mc.createTextField("txt206", (i+206), 660, 13, 50, 0);
        txt2_mc7.autoSize = "center";
        txt2_mc7.setNewTextFormat(FRM);
        txt2_mc7.selectable = false;
        txt2_mc7.textColor = 0x9C8471 ;
        txt2_mc7.text = var2_commands[i];
 
        txt2_mc8 = btn2_mc.createTextField("txt207", (i+207), 740, 13, 40, 0);
        txt2_mc8.autoSize = "center";
        txt2_mc8.setNewTextFormat(FRM);
        txt2_mc8.selectable = false;
        txt2_mc8.textColor = 0x9C8471 ;
        txt2_mc8.text = var2_applic[i];
 
        txt2_mc9 = btn2_mc.createTextField("txt208", (i+208), 810, 13, 0, 0);
        txt2_mc9.autoSize = true;
        txt2_mc9.textColor = 0x9C8471 ;
        txt2_mc9.selectable = false;
        txt2_mc9.text = var2_desc[i];
 
        btn2_mc._x = 0;
        btn2_mc._y = 44*i;
 
        if (linecol == 1) { btn_color = '0x100C0A'; linecol = 0; }
        else { btn_color = '0x000000'; linecol = 1; }
 
        with (btn2_mc) {
                beginFill(btn_color); //0b1315
                moveTo(0,0);
                lineTo(985,0);
                lineTo(985,44);
                lineTo(0,44);
                lineTo(0,10);
                endFill();
        }
 
 
        // URL ACTIONS
 
        url2_mc = btn2_mc.createEmptyMovieClip("url2"+i, i);
        with (url2_mc) {
                beginFill(0x000000);
                lineStyle(1, 0x0000FF);
                moveTo(0,0);
                lineTo(120,0);
                lineTo(120,44);
                lineTo(0,44);
                lineTo(0,10);
                endFill();
        }       
 
        url2_mc2 = btn2_mc.createEmptyMovieClip("url2"+(i+100), (i+100));
        with (url2_mc2) {
                beginFill(0x000000);
                lineStyle(1, 0x0000FF);
                moveTo(120,0);
                lineTo(280,0);
                lineTo(280,44);
                lineTo(120,44);
                lineTo(120,10);
                endFill();
        }
 
 
        url2_mc.onRollOver = function() {
                btn2_mc._alpha = 10;
        }
        url2_mc.onRollOut = function() {
                btn2_mc._alpha = 100;
        }
        url2_mc.onRelease = function() {
                getURL("http://ya.ru/yandsearch?text="+_root.var2_gameurl[i]);
        };
        url2_mc2.onRelease = function() {
                getURL("http://ya.ru/yandsearch?text="+_root.var2_gameurl[i]);
        };
        // URL ACTIONS
 
 
 
 
}
 
        }
else {
 trace("Не могу загрузить xml файл");
}
};

Сам файл тоже прикрепил
Вложение 27820

DavX 19.04.2012 20:09

Вы что умельцы, умерли все что ли?
Или за спасибо западло уже чем то помогать?
Скажите сколько заплатим.

dark256 19.04.2012 20:55

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

Хотите платить - есть раздел форума "Вакансии".

DavX 19.04.2012 21:31

Спасибо, хоть один ответ!


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

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