Форум 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)
-   -   Создание контекстного меню на клипе внутри тестового поля (http://www.flasher.ru/forum/showthread.php?t=77963)

Sancho.rancho 06.04.2006 06:17

Создание контекстного меню на клипе внутри тестового поля
 
Задача такая: Создать свое контекстное меню на мувике, который создается динамически в текстовом поле(при загрузке xml/html документа с jpg изображениями). На обычном мувике создается, на динамическом тоже, а вот если он в текстовом поле - нет. :( А нужно это для создания функции типа "Сохранить рисунок как.." которая есть в любом браузере

Король 06.04.2006 06:38

"мувике, который создается динамически в текстовом поле"

how exactly did you do that?

KPaul 06.04.2006 12:27

Если ты имеешь ввиду тэг "<img>" в хтмл, который преобразуется в клип в тексте, то в чем именно проблема, если он реально существует, на него можно повесить что угодно. Хотя сорри, никогда не пробовал. Если можно кусочек кода.

megasmall 06.04.2006 12:29

я тоже гдето читал о подобном, помоему это делаеца так:
<img src='flash.swf' width='40' height='50'>

Sancho.rancho 06.04.2006 17:13

Цитата:

Если ты имеешь ввиду тэг "<img>" в хтмл, который преобразуется в клип в тексте, то в чем именно проблема, если он реально существует, на него можно повесить что угодно. Хотя сорри, никогда не пробовал. Если можно кусочек кода.
Да, именно это я имею в виду, так вот проблема в том, что к этому клипу обратится можно (то есть ему можно сделать например unloadMovie();, но вот мышь его, так сказать, не видит и свое контекстное меню не вешается (по крайней мере у меня не получилось :( )
Код:

var xml_image_menu:ContextMenu = new ContextMenu();
xml_image_menu.customItems.push(new ContextMenuItem("Открыть рисунок в новом окне", OpenInNewWindow));
function OpenInNewWindow():Void {
        getURL(image.jpg, "_blank", "GET")         
}         
xml_text.image.menu = xml_image_menu;


KUZEN 06.04.2006 17:15

Первый раз слышу что контекстное меню можно повесить на отдельный мувик ?!

Sancho.rancho 06.04.2006 17:17

Цитата:

Сообщение от KUZEN
Первый раз слышу что контекстное меню можно повесить на отдельный мувик ?!

Почитай хелп к восьмерке, там и пример есть

KUZEN 06.04.2006 17:21

И правда есть такое )))

Что касается твоего примера может у тебя selectable = false; ?

Sancho.rancho 06.04.2006 17:26

Цитата:

Сообщение от KUZEN
И правда есть такое )))

Что касается твоего примера может у тебя selectable = false; ?

selectable = true; ну он true по умолчанию, в общем текст выделяется

Sancho.rancho 06.04.2006 18:15

Неужели никто не сталкивался с подобной задачей!?

KUZEN 06.04.2006 18:29

А что обязательно через меню. можно ведь проделывать тоже самое при простом нажатии на картинку ...

aksios 06.04.2006 18:55

Во первых, на месте img может быть swf - а у него может быть свое меню.
Во вторых, все это изврат, поскольку идет дублирование функций html.
В третих, ну и шо за контексное меню во флеше ты хош создать? Сохранить в мои рисунки? - Не работает. Открыть в новом окне? - это единственное, что имеет смысл сделать и городить только для этого меню...

Sancho.rancho 06.04.2006 20:17

Цитата:

Сообщение от aksyos
Во первых, на месте img может быть swf - а у него может быть свое меню.
Во вторых, все это изврат, поскольку идет дублирование функций html.
В третих, ну и шо за контексное меню во флеше ты хош создать? Сохранить в мои рисунки? - Не работает. Открыть в новом окне? - это единственное, что имеет смысл сделать и городить только для этого меню...

Во первых, с swf вместо img это и есть изврат.
Во вторых именно дублирование функции html и нужно, я об этом сразу написал.
Ну и в третьих по ходу, если ты знаешь, как это сделать - это не значит, что это не имеет смысла. Вопрос как раз в том чтобы избавится от одного из недостатков flash перед html (доступность контента). Я через <a href="images/image.jpg" target="_blank"> в теле html документа и сделал, но это не совсем то, что нужно.. Меня интересует в принципе, есть ли возможность создать меню для мувика (созданного из картинки) в текстовом поле, или этой возможности нету!?

aksios 06.04.2006 20:48

Цитата:

Сообщение от Sancho.rancho
Во первых, с swf вместо img это и есть изврат.
Во вторых именно дублирование функции html и нужно, я об этом сразу написал.
Ну и в третьих по ходу, если ты знаешь, как это сделать - это не значит, что это не имеет смысла. Вопрос как раз в том чтобы избавится от одного из недостатков flash перед html (доступность контента). Я через <a href="images/image.jpg" target="_blank"> в теле html документа и сделал, но это не совсем то, что нужно.. Меня интересует в принципе, есть ли возможность создать меню для мувика (созданного из картинки) в текстовом поле, или этой возможности нету!?

Дублировать html зачем? В html код будет занимать байты, в флеше килобайты, или десятки килобайт...
Насчет swf в img это не изврат, картинку конвертнуть в swf - ты даже размер уменьшить можешь, для варианта без html - чем не вариант? По крайней мере насчет меню уже будет что обсуждать.
В какой мувик ты собираешься конвертить картинку если не в swf?

Sancho.rancho 06.04.2006 21:12

Цитата:

Сообщение от aksyos
Дублировать html зачем? В html код будет занимать байты, в флеше килобайты, или десятки килобайт...
Насчет swf в img это не изврат, картинку конвертнуть в swf - ты даже размер уменьшить можешь, для варианта без html - чем не вариант? По крайней мере насчет меню уже будет что обсуждать.
В какой мувик ты собираешься конвертить картинку если не в swf?

1.Страница целиком во flash
2.Есть динамическое текстовое поле
3.В него загружается html документ(или php), новости например, там есть и картинки (много картинок!! ;)) Ты предлагаешь каждую картинку вручную конвертить в swf со своим меню? - имхо это изврат.
4.Меню не сводится к функции "Открыть в новом окне", могут быть и другие опции, например копировать в буфер (класс ClipBoard), увеличить картинку и тд.

aksios 06.04.2006 22:10

Поверх этой странички слой положи и на нем нужный html элемент.
Если в природе есть флеш, то ето еще не значит что все можно и нужно в него пихать.
Кстати, по моим скромным подсчетам флеш при размере подгружаемого в него текста больше нескольких килобайт дает о....ные тормоза. У тебя там еще туча картинок.... Не, как подгрузить и отобразить во флеше текст с картинками я знаю, тока не пойму как это с текстовым полем связано. В общем грамотно составленое техническое задание всегда рулит.

KUZEN 07.04.2006 00:11

Короче тут походу тебе придётся разбирать свой html и вместо картинок которые у тебя туда вставлены атачить пустой мувик из библиотеки и уже в него грузить эту картинку ...

7thsky™ 07.04.2006 00:47

TextField.prototype.__proto__ = MovieClip.prototype;

не пробывал ... может и поможет...

7thsky™ 07.04.2006 01:17

Еще чуть чуть побалавался с этим:

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

вот код, просто в первый кадр -> тест -> подождите когда картинка загрузиться и нажми на кнопку, посмотри в трайс, а потом правом кнопкой мыши на картинке

Код:

System.security.allowDomain ('http://www.7thsky.ru/');
var s:String = '-- 7thsky.ru -- <img src="http://www.7thsky.ru/images/7thsky_userpic.jpg" width="80" height="99"/>';


createTextField ('txt', 0, 0, 0, 100, 300);
var txt:TextField;
var tf:TextFormat = new TextFormat ();
tf.bold = true;
tf.size = 11;
tf.font = 'Arial';
tf.align = 'center';

txt.setNewTextFormat (tf);
txt.html= true;
txt.htmlText = s;

var btn:MovieClip = this.createEmptyMovieClip ('btn', 2);
btn.beginFill (0x000000, 20);
btn.lineTo (20, 0);
btn.lineTo (20, 20);
btn.lineTo (0, 20);
btn.lineTo (0, 0);
btn.endFill ();
btn._x = 110;
btn._y = 0;

btn.onPress = function () {
        var b:MovieClip = txt ['clipper-o-Depth0'];
        trace (b);
        b._visible = false;
       
        var m:ContextMenu = new ContextMenu ();
        m.customItems.push (new ContextMenuItem ('bla - bla - bla', function () {trace ('>> ' + this)}));
       
       
        var c:MovieClip = txt ['instance1'];
        trace ('MovieClip (image) >> ' + MovieClip (c));
       
        c.__proto__ = MovieClip.prototype;
        trace ('MovieClip (image) >> ' + MovieClip (c));
        c.menu = m;
}


Sancho.rancho 07.04.2006 04:32

Цитата:

Сообщение от 7thsky™
TextField.prototype.__proto__ = MovieClip.prototype;

не пробывал ... может и поможет...

Интересная идея, самое главное - работает :), спасибо огромное!!, поэксперементирую..

Iv 07.04.2006 09:00

Код:

.......
var s:String = '-- 7thsky.ru -- <img id="logo" src="http://www.7thsky.ru/images/7thsky_userpic.jpg" width="80" height="99"/>';
.......
btn.onPress = function () {
        var m:ContextMenu = new ContextMenu ();
        m.customItems.push (new ContextMenuItem ('bla - bla - bla', function () {trace ('>> ' + this)}));
        txt.logo.menu = m;
}

- если использовать id, то всё сильно упрощается.


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

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