Přidávání obsluhy události za běhu programu   zodpovězená otázka

VB.NET

ahoj,

chci nastavit obsluhu události microsoft.directx.audiovideoplayback.audio.ending.

Zkoušel jsem to příkazem

addhandler zvuk.ending, addressof NastavNaZacatek,

ale při vyvolání události se program sekne.

public sub NastavNaZacatek (byval sender as object, byval e as eventargs)

zvuk.setcurrentposition (1, microsoft.directx.audiovideoplayback.setpositionflags.settokeyframe)

end sub

Jak vlastně přiřadit obsluhu k události, jde-li o nevyzuální objekt?

Moc se těším na odpověď.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Obslužná metoda se přiřazuje stejně u všeho - buď imperativně pomocí klíčového slova AddHandler, nebo deklarativně použitím klíčových slov WithEvents u proměnné na globální úrovni a Handles u obslužné metody. Každý způsob se hodí na něco jiného.

Následující příklad Windows Forms aplikace při načtení Form1 spustí přehrávání ve smyčce (přetočení na začátek zajišťuje metoda audioPlayer_Ending), tak jak jste to pravděpodobně chtěl.

Imports Microsoft.DirectX
Imports Microsoft.DirectX.AudioVideoPlayback
Public Class Form1
  Private WithEvents audioPlayer As Audio
  Public Sub New()
    InitializeComponent()
    audioPlayer = Audio.FromFile("C:\WINDOWS\Media\ding.wav")
    audioPlayer.Play()
  End Sub
  Private Sub audioPlayer_Ending(ByVal sender As Object, ByVal e As System.EventArgs) Handles audioPlayer.Ending
    audioPlayer.SeekCurrentPosition(0, SeekPositionFlags.AbsolutePositioning)
  End Sub
End Class

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Hurá! Moc děkuju, že jste mi to takhle pěkně vysvětlil.

Konečně to chápu. Ale trochu jsme si neporozuměli. Ač jsem rád, že už umím přehrávat ve smyčce (ono se to bude hodit), měl jsem původně na mysli vždy jedno přehrátí zvuku, kdykoli se označí prvek listboxu (událost SelectedItemChanged.

Teď nastavuji pozici na začátek hned těsně před přehrátím, ale to není moc elegantní. Která událost se vyvolává hned po skončení přehrávání?

Našel bych si to na MSDN, ale zase "Content not found."

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No tak proč při každém SelectedItemChanged nezavoláte Stop a potom Play (případně ještě přetočit)?? Po skončení přehrávání nastane událost Ending, to je snad patrné jak z předchozího příkladu, tak z názvu události. "Content not found" je způsobeno pouze tím, že neumíte hledat na MSDN. Jinak by mě celkem zajímalo, proč pro tak jednoduché přehrávání nepoužijete System.Media.SoundPlayer, ale zbytečně komplikovaně DirectX, který potom na 90% počítačů kde to budete chtít spustit nebude fungovat kvůli chybějícímu Managed DirectX Runtime...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Takže protože jsem začátečník a dovolím se zeptat na věc, pro vás jako profesionálního vývojáře triviální, tak se na mě musíte zlobit? Pro informaci - jsem nevidomý. Dělám, co můžu. Na některých stránkách není jednoduché zorientovat se. Našel jsem si popis třídy Audio - Content not found. Fajn kouknul jsem se na alternativní odkaz, ale tam zase nebyl seznam událostí. Buď jsem úplně mimo a nebo je na tom MSDN nějaký problém. Přitom nedávno tam ten seznam událostí fungoval.

samozřejmě, že mi bylo patrné, že ending bude asi něco o konci. Jenže, když jsem v reagci na tuto událost nastavil pozici na začátek, zvuk se přehrával ve smyčce. Z toho jsem usoudil, že se událost asi nevolá po skončení přehrávání, ale těsně před.

ano, už jsem to změnil, jak jsem psal včera, v každém selecteditemchaanged nastavím pozici zvuku na 1 a přehraju zvuk.

Používám Directx, protože dělám hru pro nevidomé a budu chtít přehrávat víc zvuků najednou a měnit u nich volume a balance.

Prosím mějte trpělivost se začátečníky, všichni jimi jednou jsme a jsme rádi za každou radu od zkušenějších.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Proč bych se měl na vás zlobit? Jen by mě zajímalo, jak jste jako nevidomý schopen číst a psát jakýkoliv text (zdrojový kód) a ovládat poměrně komplexní uživatelské rozhraní jako má Visual Studio.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jde to, ale dělá se to dost blbě. Jednoho nevidomého znám, má pro ovládání počítače nainstalovanou hlasovou čtečku, která mu přečte to, na čem má zrovna kurzor.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V dnešní době jsou odečítače obrazovky na velmi vysoké úrovni. Můžu dělat téměř všechno, co dělají lidi co mají zrak v pořádku, ale i takjsem výrazně omezený. Obrázky mi to samozřejmě nepopíše, (opravdová lahůdka je opisování kódu z obrázku :-d). Taky je práce mnohem pomalejší, než kdybych si vše prohlížel očima. Webovou stránku si musím postupně projít, přečíst... Naštěstí se můžu pohybovat po všech možných prvcích stránky

- odkazy, tlačítka, seznamy apod... Na to jsou klávesové zkratky.

Odečítače mi taky umožňují pohybovat myší pomocí klávesových zkratek - např. po řádcích, slovech, ikonách atd...

Takže ve visual basicu jsem soběstačný. Na co neznám zkratku, to si najdu v menu, v dialogu, kde prostě procházím tabulátorem, a nebo tou "klávesnicovou" myší.

Zdrojáky si čtu po řádcích jako knížku :-d

nebo si konkrétní části kódu projdu po znacích.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je to sice off-topic, ale když už jsme u toho, existuje takovýto software, který má plnou podporu češtiny? Tzn. kvalitní syntéza české řeči. Znám JAWS for Windows a ZoomText, ale myslím že ani jedno z toho nepodporuje češtinu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Prakticky všechny aspoň trochu dobré odečítače podporují češtinu. Zoomtext je zrovna tzv. softwarová lupa, Jaws používám a zdá se mi nejlepší na trhu. Taky daleko nejdražší. :-d

existuje dokonce opensource projekt NVDA.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Můžu se zeptat na jednu věc? Jak je na tom tento web vbnet v otázce přístupnosti? Abych pravdu řekl, vůbec jsme s tímhle při vývoji nepočítali, tak by mě zajímalo, jestli tady nemáme nějaký pro vás nepříjemný prvek?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

ahoj.

Velmi vás chválím za design tohoto webu. Tenhle web je přímo blindfriendly. Všechny informace a všechny funkce jsou pro mě dostupné. Jediná maličkost je opisování kódu z obrázku. Musím si na to zavolat někoho, kdo mi to přečte. ale kód jsem musel opisovat jen jednou jedinkrát a to při registraci, takže se to dá snést.

Dalo by se to zlepšit použitím tzv. audioCaptchy, tzn. přehrání kódu namluveným hlasem.

Je možné, že jsem jediný z nevidomých v Čechách, kdo se učí visual basic.net. Ostatní zůstávají většinou u Delphi. Do toho jsem byl taky blázen, ale vb.net a c# mi učarovaly. Navíc visual studio.net má pro mě ještě pohodlnější přístup. Za tohle a za celý .net jsem Microsoftu vděčný.

nvda-project.com

opensource odečítač

blindfriendlyweb.cz

rady pro zpřístupnění webu nevidomým a slabozrakým.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nejsem sice nevidomý, ale o přístupnost se zajímám a napadlo mne, že by jistě nebylo na škodu implementovat nějaké základní klávesové zkratky (hlavní strana, ve fóru například skok na další příspěvek, reakce apod.).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je to zajímavá myšlenka, ale s tímto si poradím v pohodě. Pro skok na další příspěvek mi stačí stisknout "H" jako Headline - na další Záhlaví. Můžu se pohybovat selektivně jenom po odkazech, čímž rychle najdu odkaz na hlavní stránku. a dokonce si můžu umístit dočasnou či trvalou značku kdekoliv na stránce a pak na ni rychle skočit.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

http://www.linguatec.net/onlineservices/...

čte bezvadně!

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Velmi kvalitní syntéza češtiny, ovšem za to "Chech" by zasloužili zastřelit.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback