![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Написал промежуточный вариант приложения где ядро - swf-файл, а оболочка WinForms C#.
Начал тестировать по принципу: выбрать сторонний комп с Windows 7 вставить флешку с приложением, запустить и что-б работало. SWF-файл был написан в FlashDevelop 4 изначальные размеры указывались 800*600пкс, масштабирование "noScale". Оболочка: VisualStudio 2010 C# Express WinForms. Изначальные размеры компонента AxShockwaveFlash в форме - 920*492 пкс. Все возможные параметры Anchor в свойствах были заданы : Top, Bottom, Left, Right. Приложение писалось на компе с широкоформатным монитором (1680*1050пкс). При тестировании использовалось 4 стронних компа с мониторами 2 (1280*1024) и 2 (1680*1050), причём один из широкоформатных мониторов был вертикально установлен. На всех широкоформатных мониторах приложение работало так как было задумано. Проблемы возникли при отображение приложения на мониторах с разрешением 1280*1024 на двух аналогично. Более наглядно косяки можно увидеть на представленном скриншоте. Там выделено 3 ошибки: 1. Рабочая область - swf-файл вместо того чтобы занимать всё пространство компонента AxShockwaveFlash, занимал выделенное красным. 2. Увеличились кнопки и фоновое изображение в них сползло в верхний левый угол. 3. В верхней части меню уменьшилось и открылся фон. Если у кого-то есть какие-либо соображения по данному поводу, в чём причина косяков - поделитесь плиз. |
|
|||||
|
listener
|
1.См. в сторону автоматически генерируемого метода формы InitializeComponent() и в частности на выставление режимов AutoScaleDimensions и AutoScaleMode формы.
http://msdn.microsoft.com/ru-ru/library/ms229605.aspx http://msdn.microsoft.com/ru-ru/libr...(v=vs.90).aspx 2. Не надо злоупотреблять анкорами (имхо). Можно использовать контейнеры типа Panel, TableLayoutPanel Dock-режимы, но это имхо, повторюсь. 3. Рабочая область ролика визуально соответствует заявленным "800*600пкс, масштабирование "noScale". Естественно, масштабированием контента ролика дожен заниматься плеер, а не WinFоrms. Тут не понятно, что не устраивает. Вообще, странно, все как бы на автомате должно работать, как надо. Попорбуйте потестить на голом приложении с минимальным количеством контролов на форме и дефолтными настройкам их свойств, добавляя поочередно контролы. Возможно где-то что-то лишнего понаставили.... И да, NET-приложения можно отчасти сконфигурировать, используя *.exe.config-файл. Например, сориентировать NET-рантайм на использование определенной версии фреймворка, когда их не одна на целевой машине. На тестовых компах с версией NET все в порядке? Последний раз редактировалось alexcon314; 10.04.2013 в 17:36. |
|
|||||
|
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Я проверял на скриншоте размеры выводимого изображения SWF-файла, каждая из сторон более первоначально заданной.
Повторюсь - на широкоформатных мониторах флешка занимала всю площадь экрана отведённую под компонент AxShock а не часть её как явствует из скрина. Спасибо за ответ, буду рыть дальше. Кстати, компонент AxShock вставлен на одну из страниц TableLayoutPanel, которая вставлена в Panel, которая вставлена в ячейку TabControl. Прям как у Маршака! |
|
|||||
|
listener
|
Каким образом ролик 800*600 занимает всю площадь плеера при размере 920*492 и режиме noScale???
Хотя... В свойствах компонента AxShockwaveFlash на форме есть поля CtlScale и SAlign. Они отвечают за выравнивание и скалирование контента. При этом одновременно в коде ролика можно указать параметры stage.align и stage.scaleMode, например: что соответствует CtlScale=NoScale (или ScaleMode=0) и SAlign=LT (или AlignMode=5), Глюки можно словить, если в свойствах контрола и в коде пытаться указывать разное поведение. Кроме того, нужно смотреть и на процесс инициализации как формы с контролом, так и ролика. Т.е. что и в какой последовательности выполняется. Анкоры, наложенные на контрол, могут добавить путаницы. Выкладывайте пример проекта (C# и AS 3), где у вас происходят "непонятные" вещи. Не видя конкретного кода, трудно что-либо сказать..разве что пару общих фраз типа "чего-то вы там перемудрили" и "попробуйте все сначала" .И да, кнопочки со съехавшими картинками - это флеш или родный кнопки WinForms? Какое у них выравнивание и анкоры? Меню тоже выглядит странно, больше похоже на тулбар.. Вобщем, у меня сложилось впечатление, что вы пытаетесь как-то "своеобразно" проинициализировать приложение, оттого и глюки. |
|
|||||
|
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Вот скрин экрана моего монитора и открытого приложения. Разрешение монитора 1680*1050.
Ясно видно что работает всё пространство рабочего поля компонента AxShockW. Ядро - swf-файл выполненный в FD4, в нём ни одной кнопки прогораммно не создаётся, только рисование, логика и контакт с формой C#. В том-то и дело что я не могу выложить примеры кода, потому как не знаю где происходят непонятные вещи. На моём мониторе и других широкоформатных мониторах всё работет так как надо. Проблемы с "квадратными" (в смысле 4*3) мониторами. Я несколько переделал навигацию приложения но все внутренности те-же. |
|
|||||
|
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
У кнопок на малой форме все так как было изначально, толко уменьшена ширина, добавлены фоны (стрелки). Все кнопки VS WinForms.
|
|
|||||
|
listener
|
Сделайте вместо фона на кнопках (BackgroundImage) просто Image, и будет вам счастье...
Вы бы хоть значения свойств контрола перечислили, о которых я говорил... в коде ролика скалирование и выравнивание есть? Как загружаете ролик в контрол? Какие параметры привязок используете? Без кода нифига не понятно, по-любому. Цитата:
|
|
|||||
|
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Да я всё переделал с нуля, оттого и навигация новая. Правда опять таки на своём мониторе.
В принципе можно попробовать на "квадратном" переделать. Поговорю с народом дадут напрокат мониторчик. Вот код класса в котором описывается работа компонента AxShockWeaveFlash: using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; using AxShockwaveFlashObjects; using ShockwaveFlashObjects; using System.Windows.Forms; using System.Xml; namespace curve1 { class ComponentSWF { private Sklad sklad; public ComponentSWF(Sklad arg1) { sklad = arg1; String swfPath = Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + "curve3.swf"; sklad.form1.swf.LoadMovie(0, swfPath); sklad.form1.swf.FlashCall += new AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEventHandler(this.poluchDannAS3); } /// <summary> Получение запроса из SWF-файла компонента AxShockwaveFlash. /// Получение запроса из SWF-файла компонента AxShockwaveFlash. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void poluchDannAS3(object sender, _IShockwaveFlashEvents_FlashCallEvent e) { XmlDocument document = new XmlDocument(); document.LoadXml(e.request); XmlAttributeCollection attributes = document.FirstChild.Attributes; String command = attributes.Item(0).InnerText; XmlNodeList list = document.GetElementsByTagName("arguments"); /* Передача полученных данных для обработки и вывода результата */ string str = list[0].InnerText; switch (command) { /* Переадресация в класс SozdanieSloev */ case "otvet_SozdNewSloy": sklad.szdSloy.otvetSozdNewSloy(str); break; case "vosstanvlNameSloy": sklad.szdSloy.vosstNameSloy(); break; /* Восст.в Cbx0.Text имени прежнего слоя */ /* Переадресация в класс OtvetAS3 */ case "vyvod_okno_soobsh": sklad.otvtAS3.vyvodOtvetOkno(str); break; case "vyvod_otvetST_AS3": sklad.otvtAS3.vyvodOtvetStat(str); break; case "vyvod_otvetVL_AS3": sklad.otvtAS3.vyvodOtvetVLab(str); break; case "vyvod_proverkDann": sklad.otvtAS3.vyvodZnachMBx(str); break; /* Переадресация в класс OshybkaAS3 */ case "vyvod_oshybka_AS3": sklad.oshbAS3.vyvodOshybki(str); break; /* Вывод ошибки */ /* Переадресация в класс ComponentPicBox */ case "image_peredDannyh": sklad.cPicBox.vyvodRisunok(str); break; } } /// <summary> Вызов функции в объекте SWF отформатированной XML-строкой. /// Вызов функции в объекте SWF отформатированной XML-строкой. /// </summary> /// <param name="arg1">XML-отформатированная строка</param> public void otprZaprosSWF(string arg1) { sklad.form1.swf.CallFunction(arg1); } /* Передача в SWF-файл значений реальной ширины и высоты SWF-файла */ public void otpravkaWdtHghtSWF() { /* 1.Ширина и 2.Высота SWF-файла */ string strP = sklad.form1.swf.Width.ToString() + "*!*" + sklad.form1.swf.Height.ToString(); List<string> list = new List<string>(); list.Add("documentWdHg"); list.Add(strP); StrokaXMLzaprosAS3 strXML = new StrokaXMLzaprosAS3(sklad); string str = strXML.strokaZaprXML_AS3(list); sklad.cSWF.otprZaprosSWF(str); } } } |
|
|||||
|
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Я сторонник открытости кодов, тому есть примеры и на моём сайте kersha.ru и на этом форуме. Однако это касается только тех проектов которые претендуют на статус законченных. Незаконченные проекты не выкладываются.
Да в принципе я докопаюсь. |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|