Lesson 1 Chapter13 EVENT
Solidity はバックエンド処理、event はバックエンドからフロントエンド処理への窓口の定義。
web3.ethとevent
EVENTの例
// イベントの宣言
event IntegersAdded(uint x, uint y, uint result);
function add(uint _x, uint _y) public {
uint result = _x + _y;
// 関数が呼ばれたことをフロントエンドアプリに伝えるためにイベントを発生させる:
IntegersAdded(_x, _y, result);
return result;
}
JavaScriptで実装する場合
YourContract.IntegersAdded(function(error, result) {
// 結果について何らかの処理をする})
新しいゾンビを作る毎にそれをフロントエンドに伝えて、アプリ上に表示させる。
event NewZombie(uint zombieid,string name,uint dna);
//イベントの宣言と実際の呼び出しに分かれる。
NewZombie(uint id,string zombieid,uint dna);
//フロントエンド処理の呼び出し
コントラクトにアクセスする方法
abi = /* abi generated by the compiler */
var ZombieFactoryContract = web3.eth.contract(abi)
var contractAddress = /* our contract address on Ethereum after deploying */
var ZombieFactory = ZombieFactoryContract.at(contractAddress)
この`ZombieFactory`はコントラクトのpublic関数とイベントにアクセスできる。
// 入力テキストを取得する類のイベントのリスナーだ:
$("#ourButton").click(function(e) {
var name = $("#nameInput").val()
// ボタンをクリックすると#nameInputに入力された名前(name)を引数として`createRandomZombie`関数を呼び出します。:
ZombieFactory.createRandomZombie(name)
})
var event = ZombieFactory.NewZombie(function(error, result) {
if (error) return
generateZombie(result.zombieId, result.name, result.dna)
})
// ゾンビのdnaを取得して画像を更新する
function generateZombie(id, name, dna) {
let dnaStr = String(dna)
// 16桁未満の場合はDNAの先頭に0をつける
while (dnaStr.length < 16)
dnaStr = "0" + dnaStr
let zombieDetails = {
// 0から6の番号を取得したら、そこに1を足して1から7にするのだ。
// これを基にして、"head1.png" から"head7.png"までの
// 画像ファイルを用意する部分だ:
headChoice: dnaStr.substring(0, 2) % 7 + 1,
// 次の2桁は目の部分だ。11種類用意してあるぞ:
eyeChoice: dnaStr.substring(2, 4) % 11 + 1,
// シャツの部分は6種類用意してある:
shirtChoice: dnaStr.substring(4, 6) % 6 + 1,
// 最後の6桁は色の部分だ。 CSSのフィルタを使用して更新できる。
// 360度の色相回転(hue-rotate)を使うぞ:
skinColorChoice: parseInt(dnaStr.substring(6, 8) / 100 * 360),
eyeColorChoice: parseInt(dnaStr.substring(8, 10) / 100 * 360),
clothesColorChoice: parseInt(dnaStr.substring(10, 12) / 100 * 360),
zombieName: name,
zombieDescription: "A Level 1 CryptoZombie",
}
return zombieDetails
}
prev
-
クリプトゾンビ Lesson 1 Chapter12 ゾンビ生成関数
Lesson 1 Chapter12 ゾンビ生成関数 ゾンビの名前またはユーザーの名前をインプットして、名前からランダムなDNA値をもとめゾンビ作成するpublic関数を作成する。 ブロックチェーン上 ...
next
-
クリプトゾンビ Lesson 2 Chapter2 AddressesとMappings
Lesson 2 Chapter2 EVENT AddressesとMappings Addresses イーサリアムブロックチェーンのアカウントには、42桁(0xに続く40文字の16進数)の英数字ア ...